GROUP BYと集約を理解する
集約関数は複数行を一つの値へ要約する。GROUP BYを使うとグループごとにCOUNT、SUM、AVG、MAX、MINを計算できる。
この単元で学ぶこと
- COUNTの意味と役割を説明できる
- SUMの意味と役割を説明できる
- AVGの意味と役割を説明できる
- WHERE・GROUP BY・HAVINGと主要集約関数を使い分けられる
本文解説
WHEREは集約前の行を絞り、GROUP BYでグループを作り、HAVINGは集約後のグループへ条件を掛ける。
COUNT 行数や非NULL値数を数える集約関数。 COUNT(*)とCOUNT(列)でNULLの扱いが異なる。
SUM 数値列の合計を求める。 グループごとにも計算できる。
AVG 数値列の平均を求める。 通常NULLは対象外として扱う。
GROUP BY 同じキー値の行をグループ化する。 集約をグループ単位にする。
HAVING 集約後のグループに条件を付ける。 集約値条件に使う。
個々の行条件はWHERE、グループ条件はHAVINGと分ける。
SELECT dept, COUNT(*) FROM employee GROUP BY dept HAVING COUNT(*)>=5; は5人以上の部署を返す。
図解
重要ポイント
- COUNT: 行数や非NULL値数を数える集約関数。
- SUM: 数値列の合計を求める。
- AVG: 数値列の平均を求める。
- GROUP BY: 同じキー値の行をグループ化する。
- WHEREは集約前、HAVINGは集約後。
間違えやすい点
- 集約値条件をWHEREへそのまま書かない。
- COUNT(列)でNULLが数えられない点に注意する。
- GROUP BYなしの全体集約とグループ集約を混同しない。
用語解説
- COUNT
- 行数や非NULL値数を数える集約関数。
- SUM
- 数値列の合計を求める。
- AVG
- 数値列の平均を求める。
- GROUP BY
- 同じキー値の行をグループ化する。
- HAVING
- 集約後のグループに条件を付ける。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。