Top > SQL 関数一覧 (O‐S) > SUM(集計関数)

グループの合計、小計、総計を求める

syntax

SUM ( [ DISTINCT | ALL ] expr )
return [ NUMBER ]

parameter

expr数値式

return

  • グループ内の合計を戻す。

avail

  • 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 関数 サンプルデータ
namedeptsalary
鈴木管理部300,000700,000
高橋管理部400,000
佐藤開発部500,0001,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
 


 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)