概要: このチュートリアルでは、すべての値または個別の値の合計を計算するSQL SUM関数について説明します。
SQL SUM関数の紹介
SQL SUM関数は、すべての値または個別の値の合計を返す集約関数です。SUM関数は数値列のみに適用できます。
SUM関数の構文を以下に示します。
SUM([ALL|DISTINCT] expression)
Code language: SQL (Structured Query Language) (sql)
ALL演算子を使用すると、すべての値に集約を適用できます。SUM関数はデフォルトでALL演算子を使用します。
たとえば、(1,2,3,3,NULL)という集合があるとします。SUM関数は9を返します。SUM関数はNULL値を無視することに注意してください。
一意の値の合計を計算するには、DISTINCT演算子を使用します。例:集合(1,2,3,3,NULL)のSUM(DISTINCT)は6です。
SQL SUM関数の例
デモ目的で、以下のemployees
テーブルを使用します。

すべての従業員の給与の合計を取得するには、次のクエリのようにsalary列にSUM関数を適用します。
SELECT
SUM(salary)
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
部署IDが5である従業員の給与の合計を計算するには、次のようにクエリにWHERE句を追加します。
SELECT
SUM(salary)
FROM
employees
WHERE
department_id = 5;
Code language: SQL (Structured Query Language) (sql)
GROUP BY句を使用したSQL SUMの例
SUM関数は、GROUP BY句と組み合わせて、グループの合計を計算することがよくあります。
たとえば、各部署の従業員の給与の合計を計算するには、次のクエリのように、salary
列にSUM関数を適用し、department_id
列で行をグループ化します。
SELECT
department_id,
SUM(salary)
FROM
employees
GROUP BY
department_id;
Code language: SQL (Structured Query Language) (sql)
結果セットに部署名を含めるには、次のようにemployees
テーブルをdepartments
テーブルと結合します。
SELECT
e.department_id,
department_name,
SUM(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id;
Code language: SQL (Structured Query Language) (sql)
ORDER BY句を使用したSQL SUM関数の例
部署の給与合計を降順でソートしたいとします。この場合、次のようにORDER BY句でSUM関数を使用します。
SELECT
e.department_id,
department_name,
SUM(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
ORDER BY
SUM(salary) DESC;
Code language: SQL (Structured Query Language) (sql)
HAVING句を使用したSQL SUM関数の例
条件に基づいてグループをフィルタリングするには、HAVING句を使用します。SUM関数の結果に基づいてグループをフィルタリングする場合は、SUM関数をGROUP BY句に配置する必要があります。
たとえば、3000を超える給与の合計を持つ部署とその合計を取得する場合は、次のステートメントを使用します。
SELECT
e.department_id,
department_name,
SUM(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
HAVING
SUM(salary) > 30000
ORDER BY
SUM(salary) DESC;
Code language: SQL (Structured Query Language) (sql)
このチュートリアルでは、SUM関数を使用して集合内の値の合計を計算する方法を学習しました。