IPA過去問ドリル

平成31年度 春期 応用情報技術者試験 午前 問28

テクノロジ/データベース

過去3年分の記録を保存している “試験結果” 表から,2018年度の平均点数が600点以上となったクラスのクラス名と平均点数の一覧を取得する SQL 文はどれか。ここで,実線の下線は主キーを表す。 試験結果(学生番号,受験年月日,点数,クラス名) ※ 学生番号,受験年月日 が主キー

出典:平成31年度 春期 応用情報技術者試験 午前 問28

正解:イ

解説

2018年度は受験年月日が 2018-04-01〜2019-03-31 の範囲なので,まず WHERE 句で行を絞り込みます。次にクラス名で GROUP BY し,グループごとの集計値に対する条件は HAVING 句で指定します。平均点数600点以上という条件はグループの平均なので HAVING AVG(点数) >= 600 と書きます。

選択肢ごとの解説

  • 誤り。年度による絞込みがないため,過去3年分すべての平均点数で判定してしまいます。
  • 正しい。WHERE 句で2018年度に限定し,クラス名でグループ化した上で HAVING AVG(点数) >= 600 とグループの平均で絞り込んでいます。
  • 誤り。HAVING 句に集約関数でない「点数」を指定しており,GROUP BY で指定していない列をそのまま HAVING で使うことはできません。
  • 誤り。WHERE 点数 >= 600 で600点以上の答案だけを抽出しているため,クラス全体の平均点数を求めたことになりません。
応用情報技術者の過去問を演習モードで解く