令和元年秋期試験問題 午前問26

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
"得点"表から,学生ごとに全科目の点数の平均を算出し,平均が80点以上の学生の学生番号とその平均点を求める。aに入れる適切な字句はどれか。ここで,実線の下線は主キーを表す。

 得点(学生番号科目,点数)

〔SQL文〕
SELECT 学生番号,AVG(点数)
FROM 得点
GROUP BY a

  • 科目 HAVING AVG(点数) >= 80
  • 科目 WHERE 点数 >= 80
  • 学生番号 HAVING AVG(点数) >= 80
  • 学生番号 WHERE 点数 >= 80
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
解説
GROUP BY句でグループ化した後にグループを絞るにはHAVING句を使用します。本問では学生ごとに全科目の平均を算出したいので、「GROUP BY 学生番号」でレコードを学生番号ごとにグルーピングした後、点数の平均が80以上の学生を「HAVING AVG(点数) >= 80」で選択することになります。

「イ」と「エ」では、GROUP BY句の後にWHERE句を記述しているので構文エラーとなります。各句の記述順は、
  1. WHERE句 … 条件を指定してレコードを絞る
  2. GROUP BY句 … 指定した属性でレコードをグループ化する
  3. HAVING句 … 条件を指定してグループを絞る
  4. ORDER BY句 … レコードの表示順を指定する
と決まっていて、グループ化したものを条件で絞り込むにはHAVING句を使用しなければなりません。また「ア」は科目ごとにグループ化しているので、科目ごとの平均点を集計してしまうことになります。

したがって「ウ」が正解です。

Pagetop