アプリケーション開発でデータベースを利用する新人プログラマに向けて、SQLおよびT-SQLを短期間で理解できるよう、開発現場ですぐに必要となる内容を中心に解説する。(編集部)
主な内容
--Page 1--
▼並べ替えを実現するORDER BY句
--Page 2--
▼データのグループ化を実現するGROUP BY句
--Page 3--
▼GROUP BYを利用するときの注意点
▼まとめ
前回の「関数を使ってSELECT文をパワーアップさせる」に続き、今回も「SELECT」文にまつわる構文を取り上げます。今回取り上げるのは、「並べ替え」「グループ化」といった処理を実現するSELECT句の応用です。
それでは早速、並べ替え(ソート)の実現方法から見ていきましょう。
データベースに蓄積されたデータを扱ううえで、並べ替えを行いたいシーンが多々あります。データベースから抽出したデータをそのまま表示していると、利用者が目的とする順番で表示されるとは限らないため、扱いにくいからです。抽出したデータを商品コード順、価格順、あるいは人名順といった形で並べ替えを行うことは、データの扱いやすさを高めるうえで重要といえるでしょう。このような並べ替え処理を実現するのが、これから紹介する「ORDER BY」句です。
ORDER BY句の基本構文は次のような形で利用します。
SELECT 列名 FROM テーブル名 [WHERE 条件]
ORDER BY 列名 [ASC or DESC]
[ ]カッコで囲まれた[WHERE 条件]は必ずしも必要ではないということを意味します。「FROM」句の後、もしくは「WHERE」句の後に、ORDER BY句を指定します。
ORDER BY句では、まず並べ替えのキーとなる列名を指定します。続いて、キーとなる値の並べ替え方法をASC(昇順)、もしくはDESC(降順)句で指定します。[ASC or DESC]は省略可能で、省略した場合は、ASC(昇順)で並べ替えが行われます。
それでは、早速次のようなクエリをAdventureWorksに対して発行してみましょう。
SELECT Name,ReorderPoint FROM PRODUCTION.PRODUCT ORDER BY ReorderPoint ASC 結果 Name ReorderPoint -------------------------------------------------- ------------ Men's Sports Shorts, S 3 Touring-Panniers, Large 3 Cable Lock 3 …中略… LL Nipple 750 HL Nipple 750
このサンプルでは、ReorderPoint列の値を昇順(小さい値から大きい値へ)で並べ替えています。ASC句とDESC句で動作の違いを確認しておきましょう。
ORDER BY句では、「NULL」値は最小の値として扱われます。次の例では、「color」列の値で並べ替えを行っていますが、値がNULLである行が先頭に表示されます。
SELECT Name,Color FROM PRODUCTION.PRODUCT ORDER BY Color ASC 結果 Name Color -------------------------------------------------- --------------- Guide Pulley NULL LL Grip Tape NULL ML Grip Tape NULL …中略… Touring-1000 Yellow, 54 Yellow Touring-1000 Yellow, 60 Yellow
また、ORDER BY句では複数の列を同時に指定できます。その場合、指定した列の順で並べ替えの優先順位が決まります。
ORDER BY 販売単価,商品コード
上記のようなSQLの場合、まず「販売価格」列で昇順に並べ替え、続いて「販売価格」列の値が同じであった場合、「商品コード」列の昇順で並べ替え、というような動作を行います。
次のサンプルを見てみましょう。
SELECT ProductID,Name,ReOrderPoint FROM PRODUCTION.PRODUCT ORDER BY ReOrderPoint,ProductID 結果 ProductID Name ReOrderPoint ----------- ------------------------------------- ------------ 707 Sport-100 Helmet, Red 3 708 Sport-100 Helmet, Black 3 709 Mountain Bike Socks, M 3 …中略… 527 Spokes 750 528 Seat Lug 750
こちらのサンプルでは、「ReOrderPoint」「ProductID」列の優先順で並べ替えを行っています。
ORDER BY句は主に、人間がデータをうまく利用できるよう整形するために利用されます。どのような形で並べ替えを行えば見やすいか、考えながら利用しましょう。
Copyright © ITmedia, Inc. All Rights Reserved.