過去3年分の記録を保存している“試験結果”表から、2018年度の平均点数が600点以上となったクラスのクラス名と平均点数の一覧を取得するSQL文はどれか。ここで、実線の下線は主キーを表す。 試験結果(学生番号, 受験年月日, 点数, クラス名)
行の絞り込みはWHERE、集約結果の絞り込みはHAVINGに書く
選択肢
- ア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 試験結果 WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31' GROUP BY クラス名 HAVING AVG(点数) >= 600
2018年度に限定するには受験年月日を2018年4月1日から2019年3月31日の範囲でWHERE句により行単位で絞り込む。そのうえでクラス名でGROUP BYし、グループ全体の集計値に対する条件はHAVING句に書く必要があるため、HAVING AVG(点数) >= 600 とする。
選択肢ごとの解説
- ア年度の絞り込みが無く、過去3年分すべてを対象にした平均になってしまう。
- イ正しい。WHERE句で年度を絞り、HAVING句で平均点の条件を指定している。
- ウHAVING句に集約されていない列(点数)を書いており、グループ全体の条件にならない。
- エWHERE句で600点以上の行だけを残しているため、クラスの平均点を正しく計算できない。
同じ分野の他の問題
- 関係データベースのビューに関する記述のうち、適切なものはどれか。2025年度 秋期 午前 問28
- 更新可能なビューを作成するSQL文はどれか。ここで、SQL文中に現れる基底表は全て更新可能とする。2023年度 秋期 午前 問28
- “部門別売上”表から、部門コードごと、期ごとの売上を得るSQL文はどれか。2021年度 秋期 午前 問29
- "東京在庫"表と"大阪在庫"表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表す。 〔S…2020年度 10月試験 午前 問29
- 表に対するSQLのGRANT文の説明として、適切なものはどれか。2020年度 10月試験 午前 問26
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。