平成31年度 春期 午前 問27
データベース
“中間テスト”表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示する SQL 文中のaに入れる字句はどれか。
中間テスト(クラス名, 教科名, 学生番号, 名前, 点数)
〔SQL文〕
SELECT クラス名, 教科名, AVG(点数) AS 平均点 FROM 中間テスト a
- アGROUP BY クラス名, 教科名 ORDER BY クラス名, AVG(点数)
- イGROUP BY クラス名, 教科名 ORDER BY クラス名, 教科名
- ウGROUP BY クラス名, 教科名, 学生番号 ORDER BY クラス名, 教科名, 平均点
- エGROUP BY クラス名, 平均点 ORDER BY クラス名, 教科名
答えと解説を見る
✓ これが正解イGROUP BY クラス名, 教科名 ORDER BY クラス名, 教科名
解説
まとめる列をクラスと教科の二つにし、同じ順で並べます。
平均や合計は、行をまとめてから計算します。まとめる単位を決めるのが GROUP BY です。問いはクラスごと、教科ごとの平均を求めています。ですからまとめる単位は、クラス名と教科名の二つです。ここに学生番号を足すと、一人ずつに分かれてしまいます。平均を取る相手が一行だけになり、意味を失います。次に、表示の順を決めるのが ORDER BY です。問いはクラス名、教科名の昇順と指定しています。ですから並べ替えの鍵も、その二つを順に書きます。平均点で並べると、指定と違う順になります。正解の肢は、まとめる列と並べる列が指定と一致します。二つの指定は、それぞれ別の役目を持ちます。昇順は既定なので、書き添えなくても同じ結果です。集計する前に、行をどう束ねるかを先に決めます。書く順序も、束ねてから並べる形です。
ほかの選択肢はなぜ違うのか
- アGROUP BY クラス名, 教科名 O…:並べ替えの二つ目に平均の値を置いています。教科名の昇順という指定を満たしません。まとめる単位のほうは合っています。順序だけが食い違う形です。同じクラスの中で教科が入り乱れます。
- ウGROUP BY クラス名, 教科名, …:まとめる単位に学生番号まで含めています。一人ずつの行に分かれてしまいます。クラスと教科でまとめた平均になりません。出てくる行数も大きく増えます。個人の点がそのまま並びます。集計の粒度が細かくなりすぎています。行数が跳ね上がります。
- エGROUP BY クラス名, 平均点 O…:まとめる単位に、これから求める平均を指定しています。計算の結果を、計算の前提に使うことはできません。その名前はまとめる段では存在しません。教科ごとという条件も落ちています。式として成り立ちません。束ねる列を選び直します。
この問題の用語
- テスト決めたとおりに動くかを、実際に動かして確かめる作業のこと。何を確かめるかによって移行テスト、システムテストなどと呼び分けます。
出典:平成31年度 春期 基本情報技術者試験 午前 問27
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)