SQLでGroup ByしてCOUNTするとNULLが返ってくる謎現象について。
一旦副問い合わせしてあげれば解決します!!
COUNTで件数が取れない
15年以上、IT業界にいて、何回もSQL書いてたんだけどはじめての事象!
gistdea8b937a45784ea0e2e277e551c9305
上記の様にデータベースから欲しいデータをグルーピングして件数を取得する場合、該当するデータが無ければ0件が取得できるかと思いきや、NULLが返ってきた?!
Group Byが原因?
このSQLで”Group By”句を外すと、ちゃんと件数が0件と表示されるんだけど、仕様的に”Group By”は外せない
ちょっと調べたんだけど、理由はわからない。
“Group By”句でグルーピングするのがダメみたい
解決方法
下記のように副問合せにしてあげるだけで、ちゃんと0件が取得できます。
gist8a2d2aa01bad6e629007da9302cc6520
最後に
いや~長いこと、仕事してるけど、知らなかったな〜。
今まで何度となく、SQL書いてきたけど、グルーピングしてCOUNTで件数取得して0件ってやったことなかったのかな?
いくつになっても発見ってあるな〜。
※他にも仕事でハマった事を記事にしてます。
照合順序に気をつけろ!!SQL Serverをデフォルトで使うと大文字、小文字を区別しないぞ! – フリーランス チャレンジ!!
【SQL】外部結合で1つのテーブルキーを複数のテーブルで条件として使用する方法 – フリーランス チャレンジ!!
【その他記事】
スタンディングデスクを購入しました。リモートワークで自宅にいる時間が長くなる方には本当におすすめです。
【広告】
コメント