FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER
基本情報技術者の問題解説:SQLの HAVING 句の説明として適切なものはどれか。
問題
SQLの HAVING 句の説明として適切なものはどれか。
- ア 表の全行を物理的に削除する。
- イ グループ化後の集計結果に条件を指定する。(正解)
- ウ トランザクションを確定する。
- エ アクセス権限を付与する。
出典:オリジナル問題|参考範囲:試験要綱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。データを絞り込む句ではない。
この問題について
IPAが公開するシラバス・試験範囲・公開問題の出題形式を参考にした独自作成問題。公式問題・過去問題の転載ではありません。
公式試験問題、過去問題、公式サンプル問題、市販教材の問題文を転載したものではありません。