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を確認して集約し、HAVINGとORDER BYを適用する。

重要ポイント

  • グループ件数: 同じGROUP BYキーを持つ行数。
  • NULL除外集約: 多くの集約関数はNULL値を計算対象から除外する。
  • 集約順序: 行抽出後にグループ化し、その後集約値を求める。
  • 複数グループキー: 複数列の組合せでグループを作る。
  • COUNT(*)とCOUNT(列)の違いを必ず確認する。

間違えやすい点

  • NULLを0として平均へ含めない。
  • HAVINGをWHEREより先に評価しない。
  • 複数GROUP BY列を別々のグループと誤解しない。

用語解説

グループ件数
同じGROUP BYキーを持つ行数。
NULL除外集約
多くの集約関数はNULL値を計算対象から除外する。
集約順序
行抽出後にグループ化し、その後集約値を求める。
複数グループキー
複数列の組合せでグループを作る。
集約結果並べ替え
ORDER BYへ集約値や別名を使って並べる。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。