集合関数と集計(GROUP BY・HAVING)とは?
集合関数と集計(GROUP BY・HAVING)とは、SQLで合計・平均・件数などを求める集合関数(SUM、AVG、COUNTなど)と、それをグループ単位で集計するGROUP BY句、集計結果に対してさらに条件を絞り込むHAVING句。WHERE句は集計前の行を絞り込むのに対し、HAVING句は集計後のグループを絞り込む点が異なる。
ITサービスマネージャ試験の過去問では1回出題されています。
しゅうごうかんすうとしゅうけい
集合関数と集計(GROUP BY・HAVING)の意味
SQLで合計・平均・件数などを求める集合関数(SUM、AVG、COUNTなど)と、それをグループ単位で集計するGROUP BY句、集計結果に対してさらに条件を絞り込むHAVING句。WHERE句は集計前の行を絞り込むのに対し、HAVING句は集計後のグループを絞り込む点が異なる。
集合関数と集計(GROUP BY・HAVING)の具体例
「部署ごとの平均給与が30万円を超える部署だけを表示する」といった条件は、部署でGROUP BYした上でHAVING句で平均給与の条件を指定することで実現できる。
集合関数と集計(GROUP BY・HAVING)は試験でどう引っ掛けられる?
「行を絞り込みたいならWHERE、集計結果(グループ)を絞り込みたいならHAVING」という使い分けを取り違えやすい。
集合関数と集計(GROUP BY・HAVING)と関連する用語
集合関数と集計(GROUP BY・HAVING)が出た過去問
“社員”表から、役割名がプログラマである社員が3人以上所属している部門の部門名を取得するSQL文はどれか。ここで、実線の下線は主キーを表す。 社員(社員番号, …
正解:SELECT 部門名 FROM 社員 WHERE 役割名 = 'プログラマ' GROUP BY 部門名 HAVING COUNT(*) >= 3
要点:行の条件はWHERE、集約後の条件はHAVINGに書く
SQLの評価順は、WHEREで行を絞り込み、GROUP BYで集約し、HAVINGで集約結果を絞り込む、という順序になる。したがって役割名の条件は行単位なのでWHEREに、人数3人以上という集約後の条件はHAVING COUNT(*)>=3に書く必要がある。集約関数をWHEREに書くことはできず、HAVINGをWHEREより前に置くこともできない。
出典:平成30年度 秋期 ITサービスマネージャ試験 am2 問21(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。