SQL GROUP BY

これをマスター

マスター 売上をピボットしよう

テーマ

売上を金額のレンジごとに集計してみよう
 
 
テーブル: sales
 取引ID取引日店舗ID商品ID個数合計金額
174/1/203521250
2114/1/203272700
3194/1/203462500
4324/1/204232500
5334/1/204341245
6394/1/204321300
7504/1/205492600
8534/1/205601375
9594/1/205512600
10624/1/205492600
結果: (スペース都合で5行のみ表示)
 店舗IDボリューム
133
243
354
4
5

はじめに

SQLでピボットテーブルのような集計をする際には
GROUP BYというコマンドと
集計演算子の組み合わせで行います

GROUP BY はどのカラムを基本として集計をするかをしてします

上の例は、[店舗ID]ごとに売上の回数が何回だったかを集計しています
それぞれ、店舗 3が3個、店舗 4が3個、店舗 5が4個の注文がある事が分かります
実務で使う場合は、店舗をIDだけで出すと読みづらいので
店舗テーブルなどとジョイン(掛け合わせ)て実際の店舗名などを表示します

ORDER BY

GROUP BY でカラムを元に集計した場合
表示される結果はカラムの内容のアルファベットや数字の順番に表示され
内容によっては非常に見づらくなったりします

その場合ORDER BYが一緒に使われます
ORDER BYは、並べ替えるカラムをコンマで区切ってならべていくと
その順番で結果をソートしてくれます
Excelのソート機能と同等です

SELECT [店舗ID], [取引日]
COUNT( [取引ID]) AS ボリューム
FROM sales
GROUP BY [店舗ID], [取引日]
ORDER BY [店舗ID], [取引日]

店舗ID、取引日でグループして、店舗ID、取引日で並べ替える

(用途にもよりますが) ORDER BYはGROUP BYをコピーして
同じカラムを指示する事が多いです

もう一歩

売上を金額レンジでそれぞれ
個数、合計、最大、最小、平均値を出してみましょう

 
 
テーブル: sales
 取引ID取引日店舗ID商品ID個数合計金額
174/1/203521250
2114/1/203272700
3194/1/203462500
4324/1/203232500
5334/1/203341245
6394/1/203321300
7504/1/203492600
8534/1/203601375
9594/1/203512600
10624/1/203492600
結果: (スペース都合で5行のみ表示)
 レンジボリューム合計最小最大平均
1300円未満2795245250248
2300円以上2675300375337.5
3500円以上63500500700583.3
4
5

あわせてご覧ください

SQL IN

SQL

1 IN ( 値1, 値2, 値3… ) 1.1 はじめに1.2 便利な例1.2.1 否 […]

Read More

SQL CREATE

SQL

SQL Tips

Read More