PostgreSQLで整数の割り算

PostgreSQLで整数の割り算をした場合結果が整数に丸められてしまう。これを防ぐには実数にキャストすれば良い。

-- 1
select 3 / 2;
-- 1.5
select cast(3 as float) / 2;

0で割った場合はNULL値となる(group by時限定???)。これを0扱いにしたい場合はcoalesceを使う。

-- division by zero
select coalesce((cast(3 as float) / 0), 0);