- トップページ
- 応用情報技術者
- 平成31年度春季問題一覧
- 平成31年度春季問題28-解答・解説-分析
平成31年度春季問題
問題28
過去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 |
エ | ELECT クラス名, AVG(点数), FROM 試験結果 WHERE 点数 >= 600 GROUP BY クラス名 HAVING (MAX(受験年月日) BETWEEN ‘2018-04-01’ AND ‘2019-03-31’) |
過去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 |
エ | ELECT クラス名, AVG(点数), FROM 試験結果 WHERE 点数 >= 600 GROUP BY クラス名 HAVING (MAX(受験年月日) BETWEEN ‘2018-04-01’ AND ‘2019-03-31’) |
解答:イ
<解説>
ア | × | 2018年度の範囲指定がない。 |
イ | ○ | 正しい |
ウ | × | “点数>=600"は点数列の値が600以上ということであり,平均が600以上ということではない。 また, 列の値の評価(比較)はWHERE 句で指定するものであり,HAVING 句で指定しない(指定できない)。 |
エ | × | 条件“WHERE 点数 >=600"により,600点以上の行が抽出の対象となり,グループ化が行われる。 これでは,点数が600以上の行だけが集計の対象となるため,正しい平均点数を得ることはできない。 |
お問い合わせ