条件に一致する行をカウントするSQLを短く書くトリック「count(条件 or null)」の説明

select count(col1='aaa' or null) from table_name

上記SQLで、col1列が'aaa'であるレコード数を求められる。
これはcount関数はnullでないレコード数を数えており、「count(col1='aaa' or null)」は「count(case when col1='aaa' then true else null end)」と同じ意味であるために成立している。
「col1='aaa'」の評価結果はtrue/false/nullになる可能性があるが、それぞれの場合で「or null」の演算をすると結果は以下のようになる。

count(true  or null) → count(true)
count(false or null) → count(null)
count(null  or null) → count(null)

つまり条件がtrueの場合だけをカウントできる。