基本情報技術者試験 - 令和7年1月修了 - 問20
“中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
中間テスト(クラス名,教科名,学生番号,名前,点数)
〔SQL文〕
SELECT クラス名,教科名,AVG(点数) AS 平均点
FROM 中間テスト [ a ]
中間テスト(クラス名,教科名,学生番号,名前,点数)
〔SQL文〕
SELECT クラス名,教科名,AVG(点数) AS 平均点
FROM 中間テスト [ a ]
| ア | GROUP BY クラス名,教科名 ORDER BY クラス名,AVG(点数) |
|---|---|
| イ | GROUP BY クラス名,教科名 ORDER BY クラス名,教科名 |
| ウ | GROUP BY クラス名,教科名,学生番号 ORDER BY クラス名,教科名,平均点 |
| エ | GROUP BY クラス名,平均点 ORDER BY クラス名,教科名 |
答え : イ
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説 :
SQL文を使って「クラスごと,教科ごとの平均点」を求め,それをクラス名と教科名の昇順(小さい順,アイウエオ順など)に並べて表示する方法を問う問題です。SQLでグループごとの集計(この場合は平均点)を求めるには,GROUP BY句を使い,集計の単位となる列を指定します。
ここではクラスごと・教科ごとに平均を出したいので,GROUP BY クラス名, 教科名と指定します。そして,表示順を指定するORDER BY句では,クラス名の昇順,その中でさらに教科名の昇順に並べたいので,ORDER BY クラス名, 教科名と指定します。正解は「イ」です。
「ア」は,ORDER BYの2番目に平均点(AVG(点数))を指定しており,教科名の順ではなく平均点の順に並んでしまうため,問題文の要求と合いません。「ウ」は,GROUP BYに学生番号まで加えてしまうと,学生番号ごとに細かくグループ分けされてしまい,クラスと教科ごとの平均点が正しく求められません。「エ」は,GROUP BYにクラス名と平均点を指定しており,そもそも平均点はGROUP BYで使う集計前の値としては存在しないため,正しく集計できません。
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説 :
SQL文を使って「クラスごと,教科ごとの平均点」を求め,それをクラス名と教科名の昇順(小さい順,アイウエオ順など)に並べて表示する方法を問う問題です。SQLでグループごとの集計(この場合は平均点)を求めるには,GROUP BY句を使い,集計の単位となる列を指定します。
ここではクラスごと・教科ごとに平均を出したいので,GROUP BY クラス名, 教科名と指定します。そして,表示順を指定するORDER BY句では,クラス名の昇順,その中でさらに教科名の昇順に並べたいので,ORDER BY クラス名, 教科名と指定します。正解は「イ」です。
「ア」は,ORDER BYの2番目に平均点(AVG(点数))を指定しており,教科名の順ではなく平均点の順に並んでしまうため,問題文の要求と合いません。「ウ」は,GROUP BYに学生番号まで加えてしまうと,学生番号ごとに細かくグループ分けされてしまい,クラスと教科ごとの平均点が正しく求められません。「エ」は,GROUP BYにクラス名と平均点を指定しており,そもそも平均点はGROUP BYで使う集計前の値としては存在しないため,正しく集計できません。