SQLでの集約関数とグループ化

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;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です