基本情報暗記無料で始める

HAVINGとは?はびんぐ

HAVINGとは、SQLのSELECT文で、GROUP BYでまとめたグループのうち、条件に合うグループだけを残す指定。日本語にすると「集計した結果が〜のグループだけ」にあたる。条件には AVG(点数) >= 80 のように集約関数の結果を使える。行を1行ずつ選ぶWHEREに対して、HAVINGはグループ単位で選ぶ。

最終更新:2026-10-10

試験情報

基本情報技術者試験の過去問では1回出題されています。

基本情報技術者試験の頻出用語/テクノロジ系

別名:HAVING句

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

背景

「平均点が80点以上の学生」を探したくても、平均点はグループにまとめて計算した後でないと存在しない。行を選ぶWHEREは集計の前に働くので、集計結果を条件に使えない。そこで、集計の後でグループを選ぶための別の指定としてHAVINGが用意された。

具体例

「SELECT 学生番号, AVG(点数) FROM 得点 GROUP BY 学生番号 HAVING AVG(点数) >= 80」は、「学生番号ごとに平均点を求め、平均が80点以上の学生だけを出せ」という意味になる。Amazonのような通販の注文の表なら、顧客ごとにまとめて「HAVING COUNT(*) >= 3」とすれば、3回以上注文した顧客だけを取り出せる。

試験での引っ掛け

集約関数の結果で絞り込むのにWHEREを使う選択肢が定番の誤り。処理の順番は、FROM(どの表か)→WHERE(行を選ぶ)→GROUP BY(まとめる)→HAVING(グループを選ぶ)→SELECT(出す列)→ORDER BY(並べる)で、WHEREの段階ではまだ平均が出ていない。逆に、集計前の行で決まる条件(「科目が数学の行だけ」など)はWHEREに書くほうが、まとめる行が減って効率がよい。

関連用語

出た過去問

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

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

試験での特徴
  • 試験では1回出題
  • 分野:テクノロジ系
  • 集約関数の結果で絞り込むのにWHEREを使う選択肢が定番の誤り。