応用情報技術者試験 応用情報技術者試験 平成31年度春期 午前 問28: 過去 3 年分の記録を保存している “試験結果” 表から,2018 年度の平均点数が 600 点以上となったクラスのクラス名と平均点数の一覧を取得する SQL

←
応用情報技術者試験 平成31年度春期 午前
Q 2828 / 80
過去 3 年分の記録を保存している “試験結果” 表から,2018 年度の平均点数が 600 点以上となったクラスのクラス名と平均点数の一覧を取得する SQL 文はどれか。ここで,実線の下線は主キーを表す(以下では、実線の下線の列に(主)を付けて表す)。 試験結果(学生番号(主),受験年月日(主),点数,クラス名)
この問の正解率:76.72%(1,117件)

解説

応用情報技術者試験 平成31年度春期 午前 問28「過去 3 年分の記録を保存している “試験結果” 表から,2018 年度の平均点…」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約77%です。

正解

イ. SELECT クラス名, AVG(点数) FROM 試験結果 WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31' GROUP BY クラス名 HAVING AVG(点数) = 600

正答率 76.7%(1,117人中 857人が正解)

問題の解説

2018 年度の試験だけを集計するには、WHERE 句で受験年月日を 2018-04-01 から 2019-03-31 に絞る。その後、GROUP BY でクラス別にまとめ、グループに対する条件(平均点数が 600 以上)は HAVING 句に AVG(点数) = 600 と書く。

選択肢ごとの解説

  • ア年度を絞る条件がなく、過去 3 年分すべての点数で平均を求めてしまう。
  • イ正しい。WHERE で 2018 年度の行に絞ってから、クラス別の平均点数が 600 以上のものを HAVING で選んでいる。
  • ウHAVING 句に集計関数なしの「点数 = 600」と書いており、平均点数の条件になっていない。GROUP BY にない列を直接指定するため、SQL としても誤りである。
  • エWHERE で点数が 600 以上の行だけを集計するため平均が高く偏り、HAVING の MAX による判定も、期間外の試験を集計から除けない。

応用情報技術者試験 平成31年度春期 午前 の過去問一覧に戻る・問28

応用情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

応用情報技術者試験 合格.dev を App Store でダウンロード