SQL道場 集計関数 SUM関数

SQLで合計値を算出するSUM関数について記載しています。

対応データベース:SQLServer MySQL Oracle PostgreSQL DB2 SQLite Access ANSI

SUM関数の文法

SELECT SUM(列名) FROM テーブル
SELECT SUM (column name) FROM table
引数
Arguments
列名
Column name
数値が収納されている列の列名を指定
Specifies the column name of the column containing the number
返値
return value
[数値型] 合計値
Total numeric value

SUM関数は指定された列のNULL値以外の合計値を算出します。

DISTINCTを指定した場合は、引数で指定された列の重複を除いた合計値を算出します。ALLを指定した場合、引数で指定された列のすべての値から合計値を算出します。DISTINCT、ALLのどちらも指定しない場合は、ALLを指定した場合と同様の挙動になります。また、group by句と併せて指定するとGROUP BYで指定した列のデータ毎の合計値を算出します。SUM関数は数値型の列にのみ使用できます。

実行例

社員テーブル(employee table)

社員名(EMP_NAME)年齢(EMP_AGE)性別(EMP_SEX)時給(EMP_SALARY)
山田太郎201,000
鈴木花子351,500
竹下次郎422,500
佐藤梅子18800
ジュン鎌田20800
田中誠二382,500

MySQLの実行例

/* MySQLで時給の合計を求めるサンプル */
SELECT SUM(EMP_SALARY) FROM testdb.MST_EMPLOYEE;
MySQLで時給の合計を求めるサンプル実行結果
/* MySQL年齢ごとに時給の合計を求めるサンプル */
SELECT SUM(EMP_SALARY) FROM testdb.MST_EMPLOYEE GROUP BY EMP_AGE;
MySQL年齢ごとに時給の合計を求めるサンプル実行結果

SQLServerの実行例

/* SQLServerで時給の合計を求めるサンプル */
SELECT SUM(EMP_SALARY) FROM [testdb].[dbo].[MST_EMPLOYEE];
SQLServerで時給の合計を求めるサンプル実行結果
/* SQLServer年齢ごとに時給の合計を求めるサンプル */

SELECT SUM(EMP_SALARY) FROM [testdb].[dbo].[MST_EMPLOYEE] GROUP BY EMP_AGE;
SQLServer年齢ごとに時給の合計を求めるサンプル実行結果