複数条件で集計
コード例は、「usersテーブルから、nameが空 かつ genderがmaleのレコード数を取得する」実行命令です。
その1
# AND条件
select count(name="" and gender="male" or null) from users;
# OR条件
select count(name="" or gender="male" or null) from users;
count(*)ではないcount(xxx)は、Null以外をカウントします。
上記SQLの方針としては、条件に合致するものをtrue、合致しないものをnullで返しています。
その2
select count(*) from users where name="" and gender="male";
全件カウントしてから、whereで絞っているパターン。その1のやり方の方がスマートかも。
結果はちゃんと出ます。
独立した複数条件を同時集計する
別のカウントを同時に出すこともできます。
下記コードでは、「1. nameが空の件数、2. genderがmaleの件数、3. nameが空かつgenderがmaleの件数」を出力します。
select count(name="" or null), count(gender="male" or null), count(name="" and gender("male") or null) from users;