題目:查詢每門課程的平均成績,結果按平均成績降序排列,平均成績相同時,按課程編號升序排列
剛開始寫的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;