null値があるときのpostgresqlでの集計結果について

sqlを発行して合算値が欲しいとき集計関数「sum()」を使います
ただ、NULL値を活かしたいときにいつも忘れてしまうのでまとめ

<sample1>
nullが含まれる

test table data
[key] [value]
1 10
2 10
3 null

select sum(value), avg(value) from test;
=>
20, 10

<sample2>
全部null

test table
[key] [value]
1 null
2 null
3 null

select sum(value), avg(value) from test;
=>
null, null

<sample3>
sumの結果を足すとき

test table
[key] [value1] [value2]
1 10 null
2 10 null
3 10 null

select sum(value1) + sum(value2) from test;
=>
null

null + 30 = nullとなってしまう

<sample4>
sumの結果を足すとき(null+30=30としたいとき)

test table
[key] [value1] [value2]
1 10 null
2 10 null
3 10 null

select coalesce(sum(value1),0) + coalesce(sum(value2),0) from test;
=>
30

null + null = nullとしたいとき、<sample4>を使うと「0」になってしまう…
SQLいい方法がないか模索中。

カテゴリーsql

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください