⏱ 8分 ★★★★★ 頻出:高

GROUP BY

集計の単位を決めるGROUP BYの本質。SELECTできる列のルールを完全理解

GROUP BY=「集計の単位を決める」

GROUP BYは、指定した列の値が同じ行をグループにまとめて集計関数(SUM・COUNT・AVGなど)を適用するための命令です。

「カテゴリ別の売上合計」「部署別の人数」など、「〇〇別」の集計に使います。

GROUP BYの動作イメージ

元テーブル(orders)
order_idcategoryamount
1PC89,800
2周辺機器3,200
3PC72,000
4周辺機器7,500
5PC15,000
GROUP BY category
categoryCOUNT(*)SUM(amount)
PC3176,800
周辺機器210,700

GROUP BYの重要ルール

-- 正しいSQL
SELECT category, COUNT(*), SUM(amount)
FROM orders
GROUP BY category;

-- ❌ エラーになるSQL
SELECT category, order_id, SUM(amount) -- order_idはGROUP BYにない!
FROM orders GROUP BY category;
重要ルール: SELECTリストに書ける列は
① GROUP BYに指定した列
② 集計関数でラップした列
以外はエラーになる!

GROUP BYとWHEREの組み合わせ

-- WHERE → GROUP BY の順序
SELECT category, SUM(amount) AS total
FROM orders
WHERE order_date >= '2024-01-01' -- グループ化前に行を絞り込む
GROUP BY category;
WHEREでグループ化前の行を絞り込み→GROUP BYで集計。グループ化後に絞り込むのはHAVINGを使います。
「GROUP BY後にSELECTできる列は?」→GROUP BY列と集計関数のみ。これが試験頻出ルール。
🧠 確認クイズ
Q1. GROUP BY使用時にSELECTリストに書けないのはどれか?
Q2. WHEREとGROUP BYの処理順序として正しいのはどれか?
Q3. 部署ごとの平均給与を求めるSQLとして正しいのはどれか?