応用情報 午前ラボ

学習の画面へ

年度ごとの平均点を求める SQL 文

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

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

試験結果 (学生番号,受験年月日,点数,クラス名)

  1. ア SELECT クラス名, AVG(点数) FROM 試験結果 GROUP BY クラス名 HAVING AVG(点数) >= 600
  2. イ SELECT クラス名, AVG(点数) FROM 試験結果 WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31' GROUP BY クラス名 HAVING AVG(点数) >= 600
  3. ウ SELECT クラス名, AVG(点数) FROM 試験結果 WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31' GROUP BY クラス名 HAVING 点数 >= 600
  4. エ SELECT クラス名, AVG(点数) FROM 試験結果 WHERE 点数 >= 600 GROUP BY クラス名 HAVING (MAX(受験年月日) BETWEEN '2018-04-01' AND '2019-03-31')
正解と解説を見る

正解: イ

ポイント

  1. 2018 年度のデータだけを対象にするので、WHERE 句 で受験年月日を '2018-04-01' から '2019-03-31' に絞ります (集計の前に絞り込む)。
  2. クラスごとの平均なので GROUP BY クラス名。
  3. 平均点数が 600 点以上のクラスだけにするので、集計結果に対する条件は HAVING AVG(点数) >= 600 です。

WHERE は集計前の行を絞り、HAVING は集計後のグループを絞ります。

「データベース」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)