GROUP BY・HAVINGで集計する
問題 1
usersテーブルをcityでグループ化して、各都市名とユーザー数を取得してください
📖 解説参考資料
集計関数
| 関数 | 意味 |
|---|---|
| COUNT(*) | 行数を数える |
| SUM(列) | 合計を求める |
| AVG(列) | 平均を求める |
| MAX(列) | 最大値を求める |
| MIN(列) | 最小値を求める |
GROUP BY でグループ化
指定したカラムの値ごとにデータをグループ化して集計します。
SELECT city, COUNT(*) AS 人数
FROM users
GROUP BY city;
複数の集計関数
SELECT category,
COUNT(*) AS 商品数,
AVG(price) AS 平均価格,
MAX(price) AS 最高価格
FROM products
GROUP BY category;
HAVING でグループに条件をつける
WHEREはグループ化前、HAVINGはグループ化後の絞り込みです。
SELECT city, COUNT(*) AS 人数
FROM users
GROUP BY city
HAVING COUNT(*) >= 2;
JOIN + GROUP BY
SELECT u.city, COUNT(o.id) AS 注文数
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.city
ORDER BY 注文数 DESC;