【DB】Group ByしてCOUNTすると0件が取得できない(NULLが返ってくる)

技術

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つのテーブルキーを複数のテーブルで条件として使用する方法 – フリーランス チャレンジ!!

【その他記事】

スタンディングデスクを購入しました。リモートワークで自宅にいる時間が長くなる方には本当におすすめです。

www.ksakae1216.com

【広告】

コメント

タイトルとURLをコピーしました