SQLでGROUP BYした時のCOUNT機能について

こんにちは、カイノです。

WEBエンジニアめざs・・・うんぬんかんぬんは必要ないですね。 

 

基礎的なDB操作を学ぶべくProgateのSQLコースを勉強していました。

SQL Ⅰ,Ⅱ,Ⅲ(基礎のインプット)までは順調でした。((゚ω゚ )フムフム

 

SQL Ⅰ 道場(基礎のアウトプット)コースで複雑になってきて、「あれ・・わからん」ってなってしまったので記事にしてみました。

 

f:id:kaifumi:20191230181639p:plain

こちらは僕が書いていたコードです。

 

(DBのテーブルが無いとか、コードの書き方に統一性ないとかはいまは置いときますね。)

 

わからなかったのは2行目のCOUNT()の中に何を入れるかです。

グループごとのカウント数(ここでは購入数)を表示したいため、COUNTを使うのですが、

後ろに入るのはどのカラムかそれとも *(NULLを除いたすべてのレコード)なのかという部分

 

なぜわからくなったかと言うと

原因は7行目のGROUP BYです。

 

グループ化をすることで COUNT(*) の値が変化すると思っておらず、

グループ化の境界を超えた全レコードをカウントすると思っていました。

 

じゃあ何を入れるの?って感じで混乱してました。

 

以下のリンク先を見て納得しました。

https://sowel.co.jp/PDF_file/SQL/SQL_5_GROUP_BY.pdf

 

つまりはグループ化をしてたら、COUNT(*)でグループ化ごとの

数(購入数)をカウントできるっていうことですね。

 

その他も詳しく載っていてわかりやすかったです。復習にまた後で見ようと思います。

 

COUNTの後ろは(*) になることがほとんどみたいですね。