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

刚开始写的sql 比较简单:

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

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


但是我看到答案 可以列出 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】查询每门课程的平均成绩,结果按平均成绩降序排列教程

标签: course, score, student, 练习题, GROUP, 成绩, 25, coursename, courseid

相关文章推荐

添加新评论,含*的栏目为必填