Postgresql で NULLと空文字の件数を算出する

テーブルの用意

雑ですが以下のテーブルを使います

空白になっている箇所には空文字 '' が入っています

id name age
1 taro 32
2 jiro 30
3 saburo 28
4 shiro 26
5 55
6 40
7 null null
8 null 10

NULLと空文字を除いたレコード数を算出するSQL

SELECT sum(CASE coalesce(name, '')
               WHEN '' THEN 0
               ELSE 1
           END)
FROM staff

結果は

sum
4

はてなブログのテーブルの表示の関係で少し見辛いでくてすいません

4件なのであっていますね

NULLと空文字を除いたレコードを抽出してSELECT文で何かしたい

そういったケースでは where 句で絞ります

SELECT name,
       id,
       age
FROM staff
WHERE (CASE coalesce(name, '')
           WHEN '' THEN 0
           ELSE 1
       END) <> 0

結果は

id name age
1 taro 32
2 jiro 30
3 saburo 28
4 shiro 26

こたらの記事を参考にさせていただきました

4utand.blogspot.com blog.amedama.jp