連載
» 2007年05月25日 00時00分 公開

さらっと覚えるSQL&T-SQL入門(4):並べ替えとグループ化で集計・分析に強くなる (1/3)

アプリケーション開発でデータベースを利用する新人プログラマに向けて、SQLおよびT-SQLを短期間で理解できるよう、開発現場ですぐに必要となる内容を中心に解説する。(編集部)

[石橋潤一,株式会社システムインテグレータ]

主な内容

   --Page 1--
▼並べ替えを実現するORDER BY句
   --Page 2--
▼データのグループ化を実現するGROUP BY句
   --Page 3--
▼GROUP BYを利用するときの注意点
▼まとめ


 前回の「関数を使ってSELECT文をパワーアップさせる」に続き、今回も「SELECT」文にまつわる構文を取り上げます。今回取り上げるのは、「並べ替え」「グループ化」といった処理を実現するSELECT句の応用です。

 それでは早速、並べ替え(ソート)の実現方法から見ていきましょう。

並べ替えを実現するORDER BY句

 データベースに蓄積されたデータを扱ううえで、並べ替えを行いたいシーンが多々あります。データベースから抽出したデータをそのまま表示していると、利用者が目的とする順番で表示されるとは限らないため、扱いにくいからです。抽出したデータを商品コード順、価格順、あるいは人名順といった形で並べ替えを行うことは、データの扱いやすさを高めるうえで重要といえるでしょう。このような並べ替え処理を実現するのが、これから紹介する「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句は主に、人間がデータをうまく利用できるよう整形するために利用されます。どのような形で並べ替えを行えば見やすいか、考えながら利用しましょう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。