zoukankan      html  css  js  c++  java
  • 【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;

  • 相关阅读:
    使用闭包的注意点
    JS中的回收机制
    jQuery选择器之样式
    PNRPC 2017-2018 Gym101615I
    Verilog碎碎念
    Codeforces 420D. Cup Trick
    AGC017C. Snuke and Spells
    XVII Open Cup named after E.V. Pankratiev. GP of Tatarstan B. White Triangle
    SPOJ TETRIS2D
    AGC017B. Moderate Differences
  • 原文地址:https://www.cnblogs.com/yuanyuan2017/p/11376240.html
Copyright © 2011-2022 走看看