GROUP BY でグループ別に集計する方法と、HAVING でグループに条件を付ける方法を練習します。
GROUP BY は、同じ値を持つ行をグループにまとめて集計するときに使います。
SELECT category, COUNT(*) FROM products GROUP BY category;
これで「カテゴリごとの商品数」が取得できます。
-- カテゴリごとの平均価格
SELECT category, AVG(price) AS avg_price
FROM products
GROUP BY category;
-- カテゴリごとの合計在庫
SELECT category, SUM(stock) AS total_stock
FROM products
GROUP BY category;
WHERE が行への条件なのに対し、HAVING はグループへの条件です。
-- 商品数が2件以上のカテゴリだけ表示
SELECT category, COUNT(*) AS cnt
FROM products
GROUP BY category
HAVING cnt >= 2;
| WHERE | HAVING | |
|---|---|---|
| 対象 | 個々の行 | グループ |
| 実行タイミング | GROUP BY の前 | GROUP BY の後 |
| 集計関数 | 使えない | 使える |