問題
"得点"表から、学生ごとに全科目の点数の平均を算出し、平均が 80 点以上の学生の学生番号とその平均点を求める。a に入れる適切な字句はどれか。ここで、実線の下線は主キーを表す。[得点(学生番号, 科目, 点数)/SELECT 学生番号, AVG(点数)/FROM 得点/GROUP BY a ]
選択肢
- 1科目 HAVING AVG(点数) >= 80
- 2科目 WHERE 点数 >= 80
- 3学生番号 HAVING AVG(点数) >= 80
- 4学生番号 WHERE 点数 >= 80
正解
3. 学生番号 HAVING AVG(点数) >= 80
詳しい解説を見る解説を閉じる
解説
学生ごとに平均点を算出するので、GROUP BY は「学生番号」でグループ化します(科目でまとめると科目別平均になってしまうためアとイは誤り)。さらに、グループ化した結果に対する条件(平均が 80 点以上)は WHERE ではなく HAVING で指定します。WHERE は集約前の行に対する条件で、AVG などの集約関数は使えません。したがって GROUP BY の後に「学生番号 HAVING AVG(点数) >= 80」を続けるウが正解です。(出典: 令和元年度 秋期 基本情報技術者試験 午前 問26)
一問一答
科目A 180問+科目B 60問