指定したカラムに含まれる値の合計を取得(sum関数, total関数)

sum 関数および total 関数を使うと指定したカラムに含まれる値の合計を取得することができます。ここでは SQLite における sum 関数および total の使い方について解説します。

(Last modified: )

sum関数とtotal関数の使い方

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

sum(カラム名)

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

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

total(カラム名)

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

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

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

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table uriage(shiten text, sales);

sum関数とtotal関数の使い方(1)

INSERT 文を使って次のようなデータを格納してあります。

insert into uriage values('Tokyo', NULL);

sum関数とtotal関数の使い方(2)

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

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

sum関数とtotal関数の使い方(3)

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

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

insert into uriage values('Osaka', 450);
insert into uriage values('Nagoya', 380);
insert into uriage values('Ciba', 95);

sum関数とtotal関数の使い方(4)

ではあらためて sum 関数と total 関数で sales カラムの値の合計を取得してみます。

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

sum関数とtotal関数の使い方(5)

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

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

insert into uriage values('Fukuoka', 320.45);

sum関数とtotal関数の使い方(6)

ではあらためて sum 関数と total 関数で sales カラムの値の合計を取得してみます。

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

sum関数とtotal関数の使い方(7)

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

-- --

sum 関数および total 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。