SQL SUM

概要: このチュートリアルでは、すべての値または個別の値の合計を計算する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テーブルを使用します。

employees_table

すべての従業員の給与の合計を取得するには、次のクエリのように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関数を使用して集合内の値の合計を計算する方法を学習しました。

このチュートリアルは役に立ちましたか?