システムアーキテクト暗記無料で始める

GROUP BYとHAVINGとは?ぐるーぷばいとはびんぐ

GROUP BYは指定した列の値ごとに行をまとめる句で、COUNTやSUMなどの集約関数はまとめたグループ単位で計算される。HAVINGはまとめた後のグループに条件を掛ける句。行を1件ずつ判定するWHEREに対し、HAVINGは集約した結果そのものを条件にできる点が違う。

最終更新:2026-10-06

試験情報

システムアーキテクト試験の過去問では1回出題されています。

システムアーキテクト試験の頻出用語/午前II

別名:GROUP BY、HAVING

この語が出る過去問を解く →

背景

集計は「絞ってからまとめる」のか「まとめてから絞る」のかで結果が変わるため、SQLは条件を書く場所を2つに分けている。WHEREは結合と集約より前、HAVINGは集約より後に評価されるという実行順序が、そのまま使い分けの根拠になる。結果の正しさと処理量の両方がここで決まる。

具体例

「月間受注が100万円を超えた得意先」なら、得意先コードでGROUP BYし、HAVING SUM(金額) > 1000000 と書く。対象月の限定は行単位で判定できる条件なのでWHEREへ置き、集約に回る行数を先に減らしておく。

試験での引っ掛け

HAVINGはWHEREの代用ではない。行単位で判定できる条件までHAVINGへ書くと、集約対象の行数が減らないため処理量が落ちない。GROUP BYに含めない列を選択列に書けないという制約も、実装によって扱いが違うので設計時に確かめる。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では1回出題
  • 分野:午前II
  • HAVINGはWHEREの代用ではない。