SQLでGROUP BYした時のCOUNT機能について
こんにちは、カイノです。
WEBエンジニアめざs・・・うんぬんかんぬんは必要ないですね。
基礎的なDB操作を学ぶべくProgateのSQLコースを勉強していました。
SQL Ⅰ,Ⅱ,Ⅲ(基礎のインプット)までは順調でした。((゚ω゚ )フムフム
が
SQL Ⅰ 道場(基礎のアウトプット)コースで複雑になってきて、「あれ・・わからん」ってなってしまったので記事にしてみました。
こちらは僕が書いていたコードです。
(DBのテーブルが無いとか、コードの書き方に統一性ないとかはいまは置いときますね。)
わからなかったのは2行目のCOUNT()の中に何を入れるかです。
グループごとのカウント数(ここでは購入数)を表示したいため、COUNTを使うのですが、
後ろに入るのはどのカラムかそれとも *(NULLを除いたすべてのレコード)なのかという部分
なぜわからくなったかと言うと
原因は7行目のGROUP BYです。
グループ化をすることで COUNT(*) の値が変化すると思っておらず、
グループ化の境界を超えた全レコードをカウントすると思っていました。
じゃあ何を入れるの?って感じで混乱してました。
以下のリンク先を見て納得しました。
https://sowel.co.jp/PDF_file/SQL/SQL_5_GROUP_BY.pdf
つまりはグループ化をしてたら、COUNT(*)でグループ化ごとの
数(購入数)をカウントできるっていうことですね。
その他も詳しく載っていてわかりやすかったです。復習にまた後で見ようと思います。
COUNTの後ろは(*) になることがほとんどみたいですね。