"中間テスト"表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中のaに入れるべき字句はどれか。
中間テスト(クラス名,教科名,学生番号,名前,点数)
〔SQL文〕
SELECT クラス名, 教科名, AVG(点数) AS 平均点
FROM 中間テスト
a
正答2
解説
正解は2です。
クラスごと・教科ごとの平均点を求めるには、GROUP BY句でクラス名と教科名の二つをグループ化の単位にします。
さらに、クラス名、教科名の昇順に並べるには、ORDER BY句にクラス名、教科名の順で指定します。
ORDER BYは何も指定しなければ昇順(ASC)です。
【選択肢別解説】
1:× グループ化は正しいですが、ORDER BYの2番目が教科名ではなくAVG(点数)です。
これでは平均点の昇順に並び、教科名の昇順になりません。
2:○ クラス名と教科名でグループ化して平均点を求め、クラス名、教科名の昇順に並べるので、要求どおりの結果になります。
3:× 学生番号もグループ化に加えると、学生1人ずつのグループになり、クラスごと・教科ごとの平均にはなりません。
また並び順も平均点が含まれていて要求と異なります。
4:× 平均点は集計結果に付けた別名で、グループ化の単位には使えません。
また教科名でグループ化していないので、教科ごとの平均を求められません。
【ポイント】
SELECT句に集約関数以外で書いた列は、GROUP BY句にも全て書く必要があります。
並べ替えの基準はORDER BY句に書いた順に優先されます。