第 5 章 カラムの取得とソート
5.4 結果のソート - ORDER BY 句
SELECTステート メントでORDER BY句を使うことで、取り出されたレコード をソートして表示すること ができます。ソート順も指定できます。ORDER BY句を使わない場合、レコード はソートされることはあり ません。
SELECT FROM [WHERE] [GROUP BY] [HAVING] [ORDER BY]
ORDER BY句では、ORDER BYというキーワード の後にカラム名を指定することができます。カラムは 、 コンマで区切って複数指定できます。レコード は、ここで指定したカラムのデータを基準にソートされて出 力されます。また、カラム名のほか、カラムを指す番号を指定することもできます。
構文:
SELECTカラム名[, カラム名 . . .]
FROMテーブル名 ORDER BYカラム名 例:
たとえば 、まず、地区を基準にしてソートし 、さらに同一の地区の中で市をソートして、売上を表示したい とします。ソートは地区、市ともアルファベット順とします。上記の場合、まず、SELECTステート メント に取り出したいカラムの名前を指定します。続いて、FROMを使用してテーブルを指定し 、最後に、ORDER BYでソートの基準となるカラムを指定します。ここでは、地区と市を基準にソートしたいため、この2つ を指定します。
SELECT 市, 地区, 売上 FROM 営業所マスタ ORDER BY 地区, 市 結果は、次のようになります。
SQLガ イド 5.4結果のソート- ORDER BY句 5–5
市 地区 売上 アトランタ Eastern 367,911 シカゴ Eastern 735,042 ニューヨーク Eastern 692,637 デンバー Western 186,042 ロサンジェルス Western 835,915
SQLでは、デフォルトではデータは昇順でソートされます。降順にしたい場合、次のようにします。
構文:
SELECTカラム名[, カラム名 . . .]
FROMテーブル名 ORDER BYカラム名 [DESC][カラム名 [DESC] . . .]
例:
以下は、市、地区、売上の3つのカラムを指定し 、売上を基準にレコード を降順でソートして表示する場合 の例です。この場合、レコード は売上の大きい順( 降順)で並びます。
SELECT 市, 地区, 売上 FROM 営業所マスタ ORDER BY 売上 DESC 結果:
市 地区 売上
ロサンジェルス Western 835,915 シカゴ Eastern 735,042 ニューヨーク Eastern 692,637 アトランタ Eastern 367,911 デンバー Western 186,042 例:
たとえば 、ベーステーブルのカラムのうち、「基本給」と「成果給」という2つのカラムの値を合計し 、そ の合計値を「基本給+成果給」というカラムに表示したかったとします。
この場合、SELECTステート メントは下のようになります。このステート メントでは、社員の名前と、社員 の基本給と成果給の合計額が出力されます。また、ORDER BY句で「2」と「降順(=DESC)」を指定しい ますので、レコード は、「基本給+成果給」を基準に降順で出力されます。
SELECT社員名, 基本給 + 成果給 FROM 社員マスタ
ORDER BY 2 DESC
5 結果:
社員名 基本給+成果給 ターンブル 9100
ジョージ 7400 アレン 6300 ウオーカー 5500 オニール 4850 メイジャー 4750 エイデン 4700 ジョーダン 4250 バートン 4200 ボンフィーリオ 4175 クレ イン 3900 アントン 3500 カーライル 3375 マークソン 3000
なお、データ型が’LONG’またはTEXTの場合、レコード のソートはできません。したがって、このデータ 型は、ORDER BY句で指定することはできません。
また、ORDER BY句で指定するカラムは 、必ずしも、SELECTステート メントの取得リスト( カラム名の リスト )で指定しているカラムでなくてもかまいません。
SQLガ イド 5.4結果のソート- ORDER BY句 5–7