SQL 5章 データの参照
- 5.1. SELECT によるデータの参照
- 5.2. 条件付き参照
- 1. 不等式を使った述語
- 2. ブール演算子を使った述語
- 5.3. 特殊演算子
- 1. IN 演算子
- 2. BETWEEN 演算子
- 3. LIKE 演算子
- 4. IS NULL 演算子
- 5.4. 集約関数
- 5.5. グループ化
- 1. GROUP BY 句
- 2. HAVING 句
- 5.6. 並べ替えと名前付け
5.6. 並べ替えと名前付け
5.6.1. 出力の並べ替え
テーブルは順序の無い集合なので、テーブルからデータを取り出すとき、データが順番に抽出されるとは限りません。SQL では ORDER BY 句を使って出力に順番を適用できるようにしています。列ごとに昇順 (ASC) 降順 (DESC) を指定することができます。デフォルトでは昇順となっています。
また、複数の列を並べ替えることができます。このときは、ORDER BY 句に続く列の並んでいる順に並び替えられます。すなわち、最初に指定された列が最も優先され、2 番目に指定された列が最初の重複値の順番を決定する、といった具合になります。
-- sample.16-1 --/* 出力の並べ替え */ SELECT * FROM 顧客表 ORDER BY 顧客コード DESC ;
/* 実行結果 */ 顧客コード 顧客名 ──────── ──── 003 first house 002 onside 001 kurokiya
ORDER BY と GROUP BY を利用すれば、グループを並べ替えることができます。例えば受注表で商品コードをグループ化して商品コードを降順に並べるときは次の通り SQL を記述します。
-- sample.16-2 --/* 出力の並べ替え */ SELECT 商品コード FROM 受注表 GROUP BY 商品コード ORDER BY 商品コード DESC ;
/* 実行結果 */ 商品コード ───── 103 102 101
また、列名の代わりに整数を使って列を指定することもできます。整数は最初の列が 1 で示され、3 番目の列が 3 で示されるといったように SELECT 句での列の位置を示します。
-- sample.16-3 --/* 出力の並べ替え */ SELECT 顧客コード , 受注個数 FROM 受注表 ORDER BY 2 DESC ;
/* 実行結果 */ 顧客コード 受注個数 ──────── ─────── 001 30 001 25 002 20 002 20 002 20 001 20 003 20 003 15 002 15 001 15 001 10 003 10
5.6.2. 出力列の名前付け
出力列には、名前を付ける事ができます。MAX(列名) など集約関数を使って出力された結果などには列名が付かないので、AS 句を用いて名前を指定します。
例えば、受注表から受注個数の平均値を求め、平均という列名で表示させるには、次のように記述します。
-- sample.16-4 --/* 出力列の名前付け */ SELECT AVG(受注個数) AS 平均 FROM 受注表 ;
/* 実行結果 */ 平均 ──── 18.33333