過去3年分の記録を保存している“試験結果”表から、2018年度の平均点数が600点以上となったクラスのクラスメイト平均点数の一覧を取得するSQL文はどれか。
ここで、実線の下線は主キーを表す。
試験結果(学生番号, 受験年月日, 点数, クラス名)
ア | SELECT クラス名, AVG(点数), FROM 試験結果 GROUP BY クラス名 HAVING AVG(点数) >= 600 |
イ | SELECT クラス名, AVG(点数), FROM 試験結果 WHERE 受験年月日 BETWEEN ‘2018-04-01’ AND ‘2019-03-31’ GROUP BY クラス名 HAVING AVG(点数) >= 600 |
ウ | SELECT クラス名, AVG(点数), FROM 試験結果 WHERE 受験年月日 BETWEEN ‘2018-04-01’ AND ‘2019-03-31’ GROUP BY クラス名 HAVING 点数 >= 600 |
エ | SELECT クラス名, AVG(点数), FROM 試験結果 WHERE 点数 >= 600 GROUP BY クラス名 HAVING (MAX(受験年月日) BETWEEN ‘2018-04-01’ AND ‘2019-03-31’) |
答え イ
【解説】
取得するデータは、2018年度の平均点数が600点以上となったクラスのクラス名と平均点数の一覧なので、受験年月日が2018年度(2018年4月1日〜2019年3月31日)であることと、クラス毎の平均点(AVG())が600点以上であることが条件になるので、求めるSQL文は、
SELECT クラス名, AVG(点数) FROM 試験結果
WHERE 受験年月日 BETWEEN ‘2018-04-01’ AND ‘2019-03-31’
GROUP BY クラス名 HAVING AVG(点数) >= 600
(イ)になります。
【キーワード】
・HAVING