SQL SUM 関数

SUMは合計値を返すSQL関数です。この記事では、SUM関数の使い方をご紹介します。

SUM
DBMS SUM
MySQL
Oracle
PostgreSQL
SQL Server

使い方

OracleのSUM関数は、引数に指定した式の合計値を返すグループ関数である。

SUM([ALL|DISTINCT] expr)

ALLを指定した場合は重複する値を含めて合計値を算出する。DISTINCTを指定した場合は重複する値を含めずに合計値を算出する。

SUM関数を使用したSQLのサンプルを示す。このサンプルは、社員(emp)表から給与(sal)列の合計値を選択している。

SELECT SUM(sal) FROM emp

NULL

SUM関数はNULL以外の値の合計値を返すので、レコードにNULLが混じっていても構わない。ただし、すべてのレコードがNULLだった場合、SUM関数はNULLを返す。

すべてのレコードがNULLだった場合に合計値を0としたいときは、COALESCE関数と組み合わせる。

SELECT COALESCE(SUM(sal), 0) FROM emp

GROUP BY

特定の列をキーとしてグループ化し、各グループそれぞれの合計値を求めるには、GROUP BY 句を指定する。

SELECT deptno, SUM(sal) FROM emp GROUP BY deptno
deptnoSUM(sal)
1280
2520
3120

OVER

データそのものはグループ化せずに、グループの合計値を求めるには、OVER 句を指定する。

SELECT ename, sal, deptno, SUM(sal) OVER (PARTITION BY deptno) FROM emp
enamesaldeptnoSUM(sal)
野中ここな1401280
白鳥沙南1401280
八木美樹1302520
田中美空1302520
佐藤愛桜1302520
戸高美湖1302520
野崎結愛1203120

複数列

複数列の合計値を求めるには、それぞれの列を足し算して、その合計を求める。

SELECT SUM(price + tax) FROM example