GROUP BY
GROUP BYは同じ値を持つ行をグループ化し、集計関数と一緒に使います。 グループごとに集計する
基本文法
SELECT group_column, COUNT(*)
FROM table_name
GROUP BY group_column;例題
部署別の社員数
部署IDでグループを作り、COUNT()で社員数を数えます。
SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id;部署別の平均給与
AVG()でグループごとの平均値を求めます。
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id;カテゴリ別の商品数と平均価格
複数の集計関数を同時に使えます。
SELECT category, COUNT(*) AS product_count, AVG(price) AS avg_price FROM products GROUP BY category;知っておくと便利なこと
- SELECTに書く集計対象以外のカラムは、GROUP BYにも指定するのが基本です。
- COUNT(*)は行数を数え、COUNT(column)はNULLを除いて数えます。
- グループの集計結果を絞り込む場合はHAVINGを使います。
練習問題
- 部署別の社員数 · 中級 · GROUP BY, 集計関数
- 部署別の平均給与 · 中級 · GROUP BY, 集計関数
- 社員が2名以上の部署 · 中級 · HAVING, 集計関数