JavaScriptが無効になっています。
この状態では一部の情報が表示されず、すべての機能を利用することができません。
グループの合計、小計、総計を求める
SUM ( [ DISTINCT | ALL ] expr )
return [ NUMBER ]
SQL でのみ使用可能。(PL/SQL の埋め込み SQL 含む)
SUM 集計関数の内容
グループにおける 数値式 expr の合計値を戻す。
SUM 関数の追加説明と注意事項
SUM 関数の引数に DISTINCT を使用して合計を求めると重複した数値を1つのデータとして扱われる。
無指定の場合には SUM ( ALL expr ) と同じ。 NULL 以外のすべての数値の合計を求める。
GROUP BY 句 を使用していない場合には選択による結果セットを1つのグループとして全体の総合計を戻す。
注意
該当データが無い場合には、NULL しかデータが存在しない場合には SUM 関数は NULL を戻す。
SUM 関数やその他の集計関数において NULL 値 は 「無」をあらわす。NULL のデータしか存在しない場合に 結果は NULL となる。
変換例 ⇒ NVL( SUM( expr ),0 ) 、または、 SUM( NVL( expr,0 )) ⇒ NVL 関数
SUM 使用例
SUM 関数 サンプルデータ
name dept salary 鈴木 管理部 300,000 700,000 高橋 管理部 400,000 佐藤 開発部 500,000 1,200,000 小林 開発部 500,000 山本 開発部 200,000 青木 開発部 NULL
総合計の集計
SQL> select SUM (salary) from sum_sample;
SUM (SALARY)
-----------
1900000
補足: NULL を計算に含めると計算できなくなる。 浮動小数点の 'Nan' のようなものとして扱われる。
SQL> set null '<NULL>'
SQL> select 1 + NULL, 1d + 'Nan' from dual ;
1+NULL 1D+'NAN'
---------- ----------
<NULL> Nan
⇒ SQL*Plus の NULL 表示
部門別の給与額の集計
SQL> select dept, SUM (salary) from sum_sample group by dept;
DEPT SUM (SALARY)
------------ -----------
管理部 700000
開発部 1200000
NULL 値の集計は NULL となる。NVL 関数 による変換。
set null '<NULL>'
SQL> select dept, SUM (salary), nvl (SUM (salary), 0)
2 from sum_sample
3 where salary between 300000 and 400000 or salary is null
4 group by dept;
DEPT SUM (SALARY) NVL (SUM (SALARY),0)
------------ ----------- ------------------
管理部 700000 700000
開発部 <NULL> 0