GROUP BY / HAVING — グループ集計

初級83

GROUP BY でグループ別に集計する方法と、HAVING でグループに条件を付ける方法を練習します。

GROUP BY とは

GROUP BY は、同じ値を持つ行をグループにまとめて集計するときに使います。

SELECT category, COUNT(*) FROM products GROUP BY category;

これで「カテゴリごとの商品数」が取得できます。

GROUP BY + 集計関数

-- カテゴリごとの平均価格
SELECT category, AVG(price) AS avg_price
FROM products
GROUP BY category;

-- カテゴリごとの合計在庫
SELECT category, SUM(stock) AS total_stock
FROM products
GROUP BY category;

HAVING — グループへの条件

WHERE が行への条件なのに対し、HAVING はグループへの条件です。

-- 商品数が2件以上のカテゴリだけ表示
SELECT category, COUNT(*) AS cnt
FROM products
GROUP BY category
HAVING cnt >= 2;

WHERE と HAVING の違い

WHEREHAVING
対象個々の行グループ
実行タイミングGROUP BY の前GROUP BY の後
集計関数使えない使える
データベースを初期化中...
SQL エディタCtrl+Enter で実行
SQL を入力して実行してください
練習問題 — 0/3 完了 (0/50pt)
productsテーブルを category でグループ化して、カテゴリごとの商品数を取得してください。
15pt
productsテーブルを category でグループ化して、カテゴリごとの平均価格を取得してください。
15pt
customersテーブルを city でグループ化して、2人以上いる都市と人数だけを取得してください。
20pt