sql: 练习题 25查询每门课程的平均成绩,结果按平均成绩降序排列

Posted 初学者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql: 练习题 25查询每门课程的平均成绩,结果按平均成绩降序排列相关的知识,希望对你有一定的参考价值。

题目:查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列

刚开始写的sql 比较简单:

SELECT courseid, AVG(score) as a FROM student_score GROUP BY courseid ORDER BY a DESC, courseid ASC;

 

但是我看到答案 可以列出 coursename:

但是coursename又是在student_course 表里面,要去关联这个表,但是对于GROUP BY聚合操作,如果在SELECT中的列中 要列出 coursename ,但是 coursename 没有在GROUP BY中出现,这样的sql 

是不合法的,会报错  因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现,否则就会报错,或者这个字段出现在聚合函数里面。 

但是我还是改了系统配置,执行了这个sql 不知道在工作中这样是不是合法的?

    SELECT courseid,student_course.coursename,
    AVG(score) as a FROM student_score,student_course WHERE student_score.courseid = student_course.id
    GROUP BY courseid ORDER BY a DESC, courseid ASC;

 

 

以上是关于sql: 练习题 25查询每门课程的平均成绩,结果按平均成绩降序排列的主要内容,如果未能解决你的问题,请参考以下文章

sql 练习题 36,37查询每门功成绩最好的前两名,统计每门课程的学生选修人数(超过 5 人的课程才统计)

SQL查询每门课程最高分学生的学号,课程号,成绩

sql计算机系的平均成绩为多少?

数据库SQL语句练习题10--18

sql,查询每门课程最高分的学生的学号,课程号,成绩。再一张表里

sql语句课程练习