資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

AP 平成31年度春期 問28

 

 過去3年分の記録を保存している“試験結果”表から,2018年度の平均点数が600点以上となったクラスのクラス名と平均点数の一覧を取得するSQL文はどれか。ここで,実線の下線は主キーを表す。

  試験結果(学生番号受験年月日,点数,クラス名)

  1. SELECT クラス名, AVG(点数) FROM 試験結果
     GROUP BY クラス名 HAVING AVG(点数) >= 600
  2. SELECT クラス名, AVG(点数) FROM 試験結果
     WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31'
     GROUP BY クラス名 HAVING AVG(点数) >= 600
  3. SELECT クラス名, AVG(点数) FROM 試験結果
     WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31'
     GROUP BY クラス名 HAVING 点数 >= 600
  4. SELECT クラス名, AVG(点数) FROM 試験結果
     WHERE 点数 >= 600
     GROUP BY クラス名
     HAVING (MAX(受験年月日)
      BETWEEN '2018-04-01' AND '2019-03-31')

解答・解説

解答

 イ

解説

  1. SELECT クラス名, AVG(点数) FROM 試験結果
     GROUP BY クラス名 HAVING AVG(点数) >= 600

    “2018年度”という条件が不足しています。

  2. SELECT クラス名, AVG(点数) FROM 試験結果
     WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31'
     GROUP BY クラス名 HAVING AVG(点数) >= 600

    正しいです。

  3. SELECT クラス名, AVG(点数) FROM 試験結果
     WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31'
     GROUP BY クラス名 HAVING 点数 >= 600

    HAVING句の後がグループ化した項目ではないためエラーになります。

  4. SELECT クラス名, AVG(点数) FROM 試験結果
     WHERE 点数 >= 600
     GROUP BY クラス名
     HAVING (MAX(受験年月日)
      BETWEEN '2018-04-01' AND '2019-03-31')

    グループ化前に点数を600以上に制限しているため、適切な平均値が算出されません。

参考情報

分野・分類
分野 テクノロジ系
大分類 技術要素
中分類 データベース
小分類 データ操作
出題歴
  • AP 平成31年度春期 問28

前問 一覧 次問