1
0

SQL 複数列の合計を求める

Posted at

SQLのSUM関数を用いて、複数列の値の合計を求めたい場面がありました。

例えば以下のようなテーブルがあります。

id A B C
1 100 50 30
2 150 200 300

列A,B,Cの値すべての合計を取得する場合、以下のように書くことができます。

SELECT SUM(A) + SUM(B) + SUM(C) FROM テーブル名; -- 830

また、次のように書くこともでき、コードがシンプルになります。しかし、この書き方では値にNULLが含まれている場合に注意が必要です。

SELECT SUM(A + B + C) FROM テーブル名; -- 830

値にNULLが含まれている場合

以下のテーブルのように、値にNULLが含まれている場合の対応について説明します。

id A B C
1 100 50 30
2 150 200 NULL
SELECT SUM(A + B + C) FROM テーブル名; -- 180

合計を取得すると、2行目のC列がNULLのため、2行目のA,Bの値(150,200)も合計に含まれていません。
これを回避するために、COALESCE関数を使用し、NULL値をデフォルト値に置き換えます。

SELECT SUM(COALESCE(A, 0) + COALESCE(B, 0) + COALESCE(C, 0)) FROM テーブル名; -- 530

上記を実行すると、C列2行目のNULLが0に置き換えられ、すべての行が合計されます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0