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

平成31年度 春期 午前 問28

データベース

過去 3 年分の記録を保存している "試験結果" 表から,2018 年度の平均点数が 600 点以上となったクラスのクラス名と平均点数の一覧を取得する SQL 文はどれか。ここで,実線の下線は主キーを表す。

試験結果(学生番号,受験年月日,点数,クラス名)

答えと解説を見る

✓ これが正解イ`SELECT クラス名, AVG(点数) FROM 試験結果 WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31' GROUP BY クラス名 HAVING AVG(点数) >= 600`

解説

年度で絞ってからクラス別に集計し、平均で選別します。

3年ぶんの記録が入っている表から、ある年度だけを対象にして、さらにクラス別の平均を求めて絞り込む問題です。SQL の並びで押さえるのは三点あります。まず、対象の行を年度で絞ります。ここは行ごとの受験年月日を範囲で切るのが素直で、集計より前の段階で書きます。次に、クラス単位に束ねます。GROUP BY にクラス名を置くと、同じクラスの行がひとまとまりになります。最後に、束ねた結果に対して条件を掛けます。ここで見るのはクラスごとの平均点数で、AVG による集計の結果を HAVING で受け取り、600 点以上のクラスだけ残します。この三段を、絞る、束ねる、集計して切る、の順に踏むのが正しい書き方です。

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

出典:平成31年度 春期 応用情報技術者試験 午前 問28

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