sum関数 / total関数

広告

sum関数は値の合計を取得するために使用します。書式は次の通りです。

sum(カラム名)

引数に指定したカラムに含まれている値を合計しその結果を返します。GROUP BY句が使われている場合はグループ毎に合計が行われます。

またtotal関数も値の合計を取得するために使用します。書式は次の通りです。

total(カラム名)

同じグループ内の引数に指定したカラムに含まれている値を合計しその結果をグループ毎に返します。

2つの関数は共にカラムに含まれる値を合計した結果を返しますが、sum関数ではカラムに含まれる値が整数だけだった場合に合計を整数として返すのに対し、total関数の場合はカラムに含まれる値が整数だけだった場合も合計を浮動小数点数として返します。(カラムに浮動小数点数が含まれていた場合は、どちらの関数も合計を浮動小数点数として返します)。

また合計の対象となるカラムに含まれる値がNULLだけだった場合、sum関数はNULLを返すのに対してtotal関数は0.0を返します。

具体的には次のように使用します。

create table uriage(id integer, sales integer);

select sum(sales) from uriage;
select total(sales) from uriage;

どちらのSELECT文でも「sales」カラムに含まれる値の合計を取得します。

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。

p2-1

現時点でデータは1行だけです。また「sales」カラムの値はNULLとなっています。ではsum関数とtotal関数で「sales」カラムの値の合計を取得してみます。

select sum(sales), total(sales) from uriage;

p2-2

対象のカラムにNULLしか格納されていなかった場合、sum関数はNULLを返すのに対してtotal関数は0.0を返します。

ではデータをいくつか追加してみます。

p2-3

改めて「sales」カラムの値の合計を取得します。

p2-4

カラムに含まれる値が整数しかなかった場合、sum関数は結果を整数として返すのに対してtotal関数は結果を浮動小数点数として返します。

では今度は浮動小数点数のデータを追加してみます。

p2-5

改めて「sales」カラムの値の合計を取得します。

p2-6

カラムに含まれる値に浮動小数点数が含まれたいた場合は、sum関数もtotal関数も結果を浮動小数点数として返します。

( Written by Tatsuo Ikura )