必ず受かる情報処理技術者試験

当サイトは、情報処理技術者試験に合格するためのWebサイトです。
ITパスポート試験,基本情報技術者,応用情報技術者,高度試験の過去問題と解答及び詳細な解説を掲載しています。
  1. トップページ
  2. 応用情報技術者
  3. 平成31年度春季問題一覧
  4. 平成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以上の行だけが集計の対象となるため,正しい平均点数を得ることはできない。