検索
連載

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

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

PC用表示
Share
Tweet
LINE
Hatena

データのグループ化を実現するGROUP BY句

 「GROUP BY」句を利用すると、指定した列の値が等しい行をグループ化できます。このグループ化と集計関数を組み合わせることで、非常に高い利便性を発揮します。前回の記事でサンプルとして挙げた集計関数の利用方法は、常にSELECT文の対象となるデータ全件の値を集計していました。

SELECT SUM(TotalDue) 支払合計額 FROM Sales.SalesOrderHeader

 上記のサンプルでは、単純に「TotalDue」列の合計を集計しています。これはこれで意味のある利用法なのですが、顧客ごとに集計したい、年月ごとに集計したい、といった場合にGROUP BY句を利用することで、目的を達成できます。

GROUP BY句の利用法

 GROUP BY句は次のような形で利用します。

SELECT 列名 FROM テーブル名 [WHERE 条件]

GROUP BY 列名


 FROM句の後、もしくはWHERE句にて条件を指定した後にGROUP BY句を指定します。それでは、早速サンプルを見てみましょう。

SELECT Color,Count(*) 商品数 FROM PRODUCTION.PRODUCT
  GROUP BY Color
 
結果
Color           商品数
--------------- -----------
NULL            248
Black           93
Blue            26
Grey            1
Multi           8
Red             38
Silver          43
Silver/Black    7
White           4
Yellow          36

 このサンプルでは、「Color」列の値でデータをグループ化し、グループごとの件数を求めています。「Color」列の値が「Black」である商品は93件存在することが分かります。このように、GROUP BY句を利用することにより、グループごとに集計関数を実行することが可能です。

 GROUP BY句では、集計関数を除いた日付関数や文字列関数も利用できます。次の例では、月ごとの受注件数を求めています。

SELECT MONTH(OrderDate) as 月,count(*) 売上件数
  FROM Sales.SalesOrderHeader
  GROUP BY MONTH(OrderDate) ORDER BY 月
 
結果
月           売上件数
----------- -----------
1           2483
2           2686
3           2750
4           2740
5           3154
6           3079
7           2094
8           2411
9           2298
10          2282
11          2474
12          3014

 このように、GROUP BY句と集計関数を組み合わせることによって、幅広い形でのデータの集計や分析が可能となります。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る