基本情報技術者試験 - 令和8年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文のGROUP BY句とORDER BY句の使い方を問う問題です。クラスごと,教科ごとの平均点を求めるには,GROUP BY句で「クラス名」と「教科名」の組合せごとにグループ化する必要があります。そして,結果をクラス名・教科名の昇順で並べるには,ORDER BY句にも同じく「クラス名,教科名」を指定します。従って,正しい記述は「GROUP BY クラス名,教科名 ORDER BY クラス名,教科名」となります。
誤りの選択肢のうち,ORDER BYにAVG(点数)を指定するものは,点数の平均順に並べ替えることになり,問題文の「昇順に表示する」という条件(クラス名・教科名順)とは異なります。GROUP BYに学生番号まで加えてしまう選択肢は,学生ごとに細かくグループ分けされすぎてしまい,正しい平均点が求められません。GROUP BYに「平均点」を指定するという選択肢も,集計前の段階では平均点という列は存在しないため,文法的に誤りとなります。
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説 :
SQL文のGROUP BY句とORDER BY句の使い方を問う問題です。クラスごと,教科ごとの平均点を求めるには,GROUP BY句で「クラス名」と「教科名」の組合せごとにグループ化する必要があります。そして,結果をクラス名・教科名の昇順で並べるには,ORDER BY句にも同じく「クラス名,教科名」を指定します。従って,正しい記述は「GROUP BY クラス名,教科名 ORDER BY クラス名,教科名」となります。
誤りの選択肢のうち,ORDER BYにAVG(点数)を指定するものは,点数の平均順に並べ替えることになり,問題文の「昇順に表示する」という条件(クラス名・教科名順)とは異なります。GROUP BYに学生番号まで加えてしまう選択肢は,学生ごとに細かくグループ分けされすぎてしまい,正しい平均点が求められません。GROUP BYに「平均点」を指定するという選択肢も,集計前の段階では平均点という列は存在しないため,文法的に誤りとなります。