postgresql boolean型のデータをカウント

postgresqlでboolean型のカラムをカウントしようとしたところ、

count(boolean型のカラム名)だと全件カウントされることを恥ずかしながら今日知った。それでメモ

 

以下のようなテーブルの場合

 id |  name   | delete_flag
----+---------+-------------
  1 | ネーム1 | t
  2 | ネーム2 | t
  3 | ネーム3 | f

 

 SELECT 
 count(
 CASE 
  WHEN delete_flag = true THEN true
  ELSE NULL
 END 
)
 FROM sample

こんな感じでOK、他にもSUMを使う方法もあるみたいですが、わざわざCASE文使うとかたいぎーですね。