【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;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM