本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成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

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


正解


解説

ア 2018年度という受験年月日の条件がない。

イ 正しい。
SELECT クラス名, AVG(点数), FROM 試験結果
  WHERE 受験年月日 BETWEEN ‘2018-04-01’ AND ‘2019-03-31’
  GROUP BY クラス名 HAVING AVG(点数) >= 600
の意味は、以下のとおりである。
試験結果表から、受験年月日が2018年4月1日から2019年3月31日までのデータを取得し、クラス名でグルーピングして、その中で平均点数が600点以上のグループを抜き出し取得し、クラス名と平均点を表示する。

ウ HAVING句では、GROUP BYで指定された列か、集計関数しか指定できず、構文エラーになる。

エ WHERE 点数 >= 600 によって、試験結果表から点数が600点以上のデータが取得され、正しい結果が得られない。

問27 目次 問29