PostgreSQL にて、値がNULLの場合は、代わりの値を返す COALESCE 関数という便利なものを教えてもらったのでメモ。
SUM 関数は、指定したカラム(ここでは money)の値が全て NULL の場合、NULLを返します。
返り値が NULL ではなく、0 にしたいので、最初は下記のように書いていました。
SELECT
CASE WHEN SUM(money) IS NOT NULL THEN SUM(money) ELSE 0 END AS total_money
FROM user;
このような、SUM関数の結果がNULLの場合は、0 を返して欲しいという書き方は、CASE 文を使わなくても、COALESCE 関数を使えば実現できるみたいです。
6.12.2. COALESCE COALESCE(value [, ...]) COALESCE 関数は、NULL でない自身の最初の引数を返します。 データを表示の目的で取り出す際、NULL 値の代わりにデフォルト値を使う場合、時として便利なことがあります。 その例です。SELECT COALESCE(description, short_description, ‘(none)’) …
・引用元:条件式
なので、COALESCE 関数を使って、下記のように書くことができます。
SELECT
COALESCE(SUM(money), 0) AS total_money
FROM user;
以上です。
【参考】