GROUP BYとHAVINGとは?
GROUP BYとHAVINGとは、GROUP BYは指定した列の値ごとに行をまとめ、COUNTやSUMなどの集約関数をグループごとに適用する句。HAVINGはまとめた後のグループに対する絞り込み条件を指定する。WHEREがまとめる前の行を絞るのに対し、HAVINGは集約結果を条件にできる点が異なる。
システムアーキテクト試験の過去問では1回出題されています。
ぐるーぷばいとはびんぐ
GROUP BYとHAVINGの意味
GROUP BYは指定した列の値ごとに行をまとめ、COUNTやSUMなどの集約関数をグループごとに適用する句。HAVINGはまとめた後のグループに対する絞り込み条件を指定する。WHEREがまとめる前の行を絞るのに対し、HAVINGは集約結果を条件にできる点が異なる。
GROUP BYとHAVINGの具体例
「月間受注が100万円を超えた得意先」を求めるには、得意先コードでGROUP BYし、HAVING SUM(金額) > 1000000 とする。これをWHEREに書くことはできない。対象月の限定は行単位の条件なのでWHEREで先に絞ると処理量が減る。
GROUP BYとHAVINGは試験でどう引っ掛けられる?
HAVINGはWHEREの代わりではない。行単位で絞れる条件までHAVINGに書くと、集約対象の行数が減らず性能が落ちる。またGROUP BYに含めない列を選択列に書けない制約も、実装差があるため設計時に確認する。
GROUP BYとHAVINGと関連する用語
GROUP BYとHAVINGが出た過去問
ある月の“月末商品在庫”表と“当月商品出荷実績”表を使って、ビュー“商品別出荷実績”を定義した。このビューにSQL文を実行した結果の値はどれか。 [ビュー“商品…
正解:400
要点:NULLは比較で真にならず、WHERE句の対象から外れる
ビューは外部結合と集約により、商品コードごとの出荷数合計と在庫数を返す。出荷実績のないS002とS004は合計がNULLとなり、WHERE句の比較で真とならず除外される。条件を満たすのは合計150のS001(在庫100)と合計300のS003(在庫300)で、在庫数の合計は400となる。
出典:令和3年度 春期 システムアーキテクト試験 am2 問24(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。