
テーブルをグループに切り分けて集計したい。
GROUP BYってどうやって使うの?
わかりやすく教えて欲しい!
こういった疑問にこたえます。
この記事を読めば
- 集約関数とGROUP BYを使ってグループごとに集計することができるようになる
エンジニアの僕がわかりやすく解説します。
GROUP BY句の使い方
GROUP BY句はテーブルをいくつかのグループに切り分けて集約したいときに使います。
例えば、次のようなshohinテーブルがあったとします。
shohin_id | shohin_mei | shohin_bunrui | kakaku |
‘0001’ | ‘鉛筆’ | ‘事務用品’ | 100 |
‘0002’ | ‘ボールペン’ | ‘事務用品’ | 100 |
‘0003’ | ‘Tシャツ’ | ‘衣類’ | 1000 |
‘0004’ | ‘鍋’ | ‘キッチン用品’ | 2000 |
‘0005 | ‘包丁’ | ‘キッチン用品’ | 1500 |
‘0006’ | ‘帽子’ | ‘衣類’ | NULL |
このテーブルの商品分類ごとの平均価格を出したい場合などにGROUP BY句を使用します。
GROUP BYの構文は次の通りです。
SELECT <列名1>, <列名2>,・・・
FROM <テーブル名>
GROUP BY <列名1>, <列名2>,・・・;
例えば、shohinテーブルの商品分類ごとの最大価格を出したい場合は次のようなSQLになります。
SELECT shohin_bunrui, MAX(kakaku)
FROM shohin
GROUP BY shohin_bunrui;
実行結果
shohin_bunrui | max
---------------+------
キッチン用品 | 2000
衣服 | 1000
事務用品 | 100
GROUP BY句に指定する列のことを集約キーやグループ化列と呼びます。
ここではshohin_bunruiが集約化キーです。
GROUP BYでshohin_bunruiを指定すると「キッチン用品」「衣類」「事務用品」の3つの行が表示されました。
GROUP BYはテーブルを集約キーでカットするイメージです。区切りごとに集計します。

GROUP BY句はWHERE句の後に記述します。
句の記述順序はこのようになります。
SELECT句 → FROM句 → WHERE句 → GROUP BY句
入れ替えは不可なので覚えておきましょう。
GROUP BYの使い方まとめ
解説の内容をまとめます。
- GROUP BYはテーブルをいくつかのグループに切り分けて集約したいときに使う
- GROUP BY句に指定する列のことを集約キーやグループ化列と呼び
- GROUP BY句はWHERE句の後に書く
以上、お疲れ様でした。
コメント