基本情報技術者令和元年秋期 午前問26

午前問26

"得点"表から,学生ごとに全科目の点数の平均を算出し,平均が80点以上の学生の学生番号とその平均点を求める。aに入れる適切な字句はどれか。ここで,実線の下線は主キーを表す。

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

〔SQL文〕
SELECT 学生番号,AVG(点数)
FROM 得点
GROUP BY a
  • 科目 HAVING AVG(点数) >= 80
  • 科目 WHERE 点数 >= 80
  • 学生番号 HAVING AVG(点数) >= 80
  • 学生番号 WHERE 点数 >= 80

分類

テクノロジ系 » データベース » データ操作

正解

解説

GROU BY句でグループ化した後にグループを絞るにはHAVING句を使用します。本問では、学生ごとに全科目の平均を算出したいので、「GROUP BY 学生番号」で学生番号ごとにグルーピングした後、点数の平均が80以上の学生を「HAVING AVG(点数) >= 80」で選択することになります。

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

したがって「ウ」が正解です。
© 2010-2020 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop