「GROUP BY」句を利用すると、指定した列の値が等しい行をグループ化できます。このグループ化と集計関数を組み合わせることで、非常に高い利便性を発揮します。前回の記事でサンプルとして挙げた集計関数の利用方法は、常にSELECT文の対象となるデータ全件の値を集計していました。
SELECT SUM(TotalDue) 支払合計額 FROM Sales.SalesOrderHeader
上記のサンプルでは、単純に「TotalDue」列の合計を集計しています。これはこれで意味のある利用法なのですが、顧客ごとに集計したい、年月ごとに集計したい、といった場合に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.