フリーランス チャレンジ!!

フリーランス チャレンジ!!

週休4日制に俺はなる!

【DB】Group ByしてCOUNTすると0件が取得できない

スポンサーリンク

f:id:ksakae1216:20170216230243j:plain

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

【広告】