GROUP BYと集約の試験問題への適用
集約結果予測では、まずWHEREで対象行を決め、グループ分けし、各グループの件数・合計・平均を計算して最後にHAVINGを評価する。
この単元で学ぶこと
- グループ件数の意味と役割を説明できる
- NULL除外集約の意味と役割を説明できる
- 集約順序の意味と役割を説明できる
- 小さな表からGROUP BY・HAVING結果を手計算できる
本文解説
NULLが含まれる列のCOUNTやAVGは対象行数と異なる場合があるため、値の有無を明示して計算する。
グループ件数 同じGROUP BYキーを持つ行数。 COUNT(*)で求める。
NULL除外集約 多くの集約関数はNULL値を計算対象から除外する。 COUNT(*)は行を数える。
集約順序 行抽出後にグループ化し、その後集約値を求める。 HAVINGは集約後。
複数グループキー 複数列の組合せでグループを作る。 各組合せごとに一つの集約結果。
集約結果並べ替え ORDER BYへ集約値や別名を使って並べる。 集約後の表示順を決める。
紙上でグループごとに箱を作り、値を入れてCOUNT/SUM/AVGを求める。
部署10の給与100,200,NULLならCOUNT(*)=3、COUNT(salary)=2、AVG(salary)=150。
図解
重要ポイント
- グループ件数: 同じGROUP BYキーを持つ行数。
- NULL除外集約: 多くの集約関数はNULL値を計算対象から除外する。
- 集約順序: 行抽出後にグループ化し、その後集約値を求める。
- 複数グループキー: 複数列の組合せでグループを作る。
- COUNT(*)とCOUNT(列)の違いを必ず確認する。
間違えやすい点
- NULLを0として平均へ含めない。
- HAVINGをWHEREより先に評価しない。
- 複数GROUP BY列を別々のグループと誤解しない。
用語解説
- グループ件数
- 同じGROUP BYキーを持つ行数。
- NULL除外集約
- 多くの集約関数はNULL値を計算対象から除外する。
- 集約順序
- 行抽出後にグループ化し、その後集約値を求める。
- 複数グループキー
- 複数列の組合せでグループを作る。
- 集約結果並べ替え
- ORDER BYへ集約値や別名を使って並べる。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。