"中間テスト"表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中のaに入れる字句はどれか。
中間テスト(クラス名,教科名,学生番号,名前,点数)
〔SQL文〕
SELECT クラス名, 教科名, AVG(点数) AS 平均点
FROM 中間テスト
a
正答2
解説
正解は2です。
SQL文のGROUP BY句とORDER BY句の使い方を問う問題です。
クラスごと、教科ごとに集計するには、GROUP BY句にクラス名と教科名を指定します。
クラス名、教科名の昇順に表示するには、ORDER BY句にクラス名、教科名の順で指定します。
昇順を表すASCは省略できます。
【選択肢別解説】
1:× GROUP BY句は正しいものの、ORDER BY句の第2キーがAVG(点数)です。
同じクラスの中で教科名ではなく平均点の昇順に並ぶため、題意に合いません。
2:○ クラス名と教科名でグループ化して平均点を求め、クラス名、教科名の昇順に並べます。
題意どおりの結果になります。
3:× GROUP BY句に学生番号まで含めると、学生一人一人の単位でグループができます。
教科ごとの平均点ではなく、各学生の点数がそのまま出てしまいます。
4:× 平均点は集計の結果であり、グループ化の基準には使えません。
また、教科名でグループ化していないため、SELECT句の教科名を表示できません。
【ポイント】
集計関数を使うとき、SELECT句に並べる集計以外の列は、すべてGROUP BY句に指定します。
ORDER BY句では、指定した順に並べ替えのキーの優先度が決まります。