過去問解きまくり研究所 ホーム

令和元年度 秋期 午前 問26

データベース

GROUP BYに関する問題

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

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

〔SQL文〕

SELECT 学生番号, AVG(点数)
FROM 得点
GROUP BY   a
答えと解説を見る

✓ これが正解ウ学生番号 HAVING AVG(点数) >= 80

解説

学生番号でまとめてから、平均の値で絞り込む書き方です。

求めたいのは学生ごとの平均なので、まとめる単位は学生番号です。表は学生番号と科目の組で一行が決まっているため、科目でまとめると別の集計になります。GROUP BY に学生番号を置くと、一人につき一行の集計結果ができます。次に、その集計結果に対して条件を掛けます。ここで使えるのは HAVING で、まとめた後の値を条件にできます。もう一つの絞り込みは、まとめる前の一行ずつに対して働きます。平均はまとめて初めて計算できる値なので、前の段では使えません。つまり、まとめる単位が学生番号であることと、条件を後の段に置くことの二つが同時に満たされている必要があります。どの段で絞るのかを意識すると、この形の問いは迷いません。どの行がどの組にまとまるかを紙に描くと、二段の違いが見えます。

ほかの選択肢はなぜ違うのか

出典:令和元年度 秋期 基本情報技術者試験 午前 問26

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)