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人以上の部署を返す。

図解

集約処理の流れ
WHEREで行を絞り、GROUP BYでまとめ、集約後にHAVINGでグループを絞る。

重要ポイント

  • COUNT: 行数や非NULL値数を数える集約関数。
  • SUM: 数値列の合計を求める。
  • AVG: 数値列の平均を求める。
  • GROUP BY: 同じキー値の行をグループ化する。
  • WHEREは集約前、HAVINGは集約後。

間違えやすい点

  • 集約値条件をWHEREへそのまま書かない。
  • COUNT(列)でNULLが数えられない点に注意する。
  • GROUP BYなしの全体集約とグループ集約を混同しない。

用語解説

COUNT
行数や非NULL値数を数える集約関数。
SUM
数値列の合計を求める。
AVG
数値列の平均を求める。
GROUP BY
同じキー値の行をグループ化する。
HAVING
集約後のグループに条件を付ける。

関連教材

参考資料

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

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