SQLでの集約関数とグループ化
このページでは、SQLの集約関数とグループ化について詳しく解説します。
目次
集約関数とは
SQLの集約関数は、複数の行に対して計算を行い、単一の値を返す関数です。代表的なものには以下があります。
COUNT()
– 行の数を数えるSUM()
– 数値の合計を求めるAVG()
– 平均値を計算するMAX()
– 最大値を取得するMIN()
– 最小値を取得する
例えば、従業員テーブルから平均給与を取得するには以下のようにします。
SELECT AVG(salary) FROM employees;
GROUP BYによるグループ化
GROUP BY
句を使うと、特定の列の値ごとにデータをグループ化できます。
例えば、各部署ごとの平均給与を求めるには以下のようにします。
SELECT department, AVG(salary) FROM employees GROUP BY department;
HAVING句の使い方
HAVING
句は、GROUP BY
でグループ化した後に条件を設定する際に使用します。
例えば、平均給与が50万円以上の部署のみを抽出するには以下のようにします。
SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) >= 500000;
実際の使用例
以下に、実際のデータを使った集計例を示します。
例1: 顧客ごとの注文合計
SELECT customer_id, SUM(amount) FROM orders GROUP BY customer_id;
例2: 商品カテゴリごとの売上最大値
SELECT category, MAX(sales) FROM products GROUP BY category;
応用テクニック
WITH
句を使った集約クエリのネストや、複数の集約関数を組み合わせることで、より高度な分析が可能になります。
WITH avg_salaries AS (
SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department
)
SELECT department FROM avg_salaries WHERE avg_salary > 600000;