過去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')
解答
イ
解説
- SELECT クラス名, AVG(点数) FROM 試験結果
GROUP BY クラス名 HAVING AVG(点数) >= 600
“2018年度”という条件が不足しています。 - 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
HAVING句の後がグループ化した項目ではないためエラーになります。 - SELECT クラス名, AVG(点数) FROM 試験結果
WHERE 点数 >= 600
GROUP BY クラス名
HAVING (MAX(受験年月日)
BETWEEN '2018-04-01' AND '2019-03-31')
グループ化前に点数を600以上に制限しているため、適切な平均値が算出されません。
参考情報
分野・分類
分野 | テクノロジ系 |
大分類 | 技術要素 |
中分類 | データベース |
小分類 | データ操作 |
出題歴
- AP 平成31年度春期 問28