本文へスキップ

FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER

基本情報技術者の問題解説:SQLの HAVING 句の説明として適切なものはどれか。

テクノロジ系 標準 fe_a_s002_q008

問題

SQLの HAVING 句の説明として適切なものはどれか。

  1. 表の全行を物理的に削除する。
  2. グループ化後の集計結果に条件を指定する。(正解)
  3. トランザクションを確定する。
  4. アクセス権限を付与する。
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲

正解と解説

正解:グループ化後の集計結果に条件を指定する。

考え方:HAVING句は、GROUP BYで集約した後のグループに対して条件を指定します。例えば「部署ごとの平均給与を求め、平均が30万円以上の部署だけ残す」のように、集計結果を条件にするときに使います。

誤答の見分け方:全行削除はDELETE,トランザクション確定はCOMMIT,権限付与はGRANT です。いずれも集計後のグループを絞り込む句ではありません。

押さえるポイント:WHEREは集計前の行を絞り、HAVINGは集計後のグループを絞ります。この順序の違いを押さえておくとSQL問題で迷いにくくなります。

なぜそうなるか:SQLは概念上 FROM → WHERE → GROUP BY → HAVING → SELECT の順で処理されます。WHEREはグループ化の前に評価されるため COUNT や AVG などの集約関数を条件にできませんが、HAVINGはGROUP BYの後に評価されるので集計値を条件に使えるのです。

他の選択肢はなぜ違う?

  • 全行の削除はDELETE文の仕事。HAVINGは絞り込みの句で、削除はしない。
  • トランザクションの確定はCOMMIT。集計結果の条件指定とは別物。
  • 権限付与はGRANT。データを絞り込む句ではない。

この問題について

出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲

IPAが公開するシラバス・試験範囲・公開問題の出題形式を参考にした独自作成問題。公式問題・過去問題の転載ではありません。

公式試験問題、過去問題、公式サンプル問題、市販教材の問題文を転載したものではありません。

参考範囲: シラバスVer.9.2参考

参考文献・出典(公式情報)

RELATED

関連問題