Vivien_o.O 2022-04-06 15:42 采纳率: 100%
浏览 43
已结题

MySQL ORDER BY 语句失效

问题描述:

表和字段:
-- 1.学生表
-- Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
-- 2.课程表
-- Course(C,Cname,T) --C --课程编号,Cname 课程名称,T 教师编号
-- 3.教师表
-- Teacher(T,Tname) --T 教师编号,Tname 教师姓名
-- 4.成绩表
-- SC(S,C,score) --S 学生编号,C 课程编号,score 分数

按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

代码:
SELECT  a.`S`,a.`Sname`,
IFNULL(MAX(CASE c.Cname WHEN '语文' THEN b.score ELSE 0 END),0) '语文',
IFNULL(MAX(CASE c.Cname WHEN '数学' THEN b.score ELSE 0 END),0)'数学',
IFNULL(MAX(CASE c.Cname WHEN '英语' THEN b.score ELSE 0 END),0) '英语',
IFNULL(CAST(AVG(b.score) AS DECIMAL(18,2)),0) '平均分'
FROM student a 
LEFT JOIN sc b
ON a.`S` = b.`S`
LEFT JOIN course c
ON b.`C` = c.`C`
GROUP BY a.`S`,a.`Sname`
ORDER BY '平均分'  ;

运行结果

img

怎么使结果排序

  • 写回答

4条回答 默认 最新

  • 一起随缘 2022-04-06 16:08
    关注
    
    SELECT  a.`S`,a.`Sname`,
    IFNULL(MAX(CASE c.Cname WHEN '语文' THEN b.score ELSE 0 END),0) '语文',
    IFNULL(MAX(CASE c.Cname WHEN '数学' THEN b.score ELSE 0 END),0)'数学',
    IFNULL(MAX(CASE c.Cname WHEN '英语' THEN b.score ELSE 0 END),0) '英语',
    IFNULL(CAST(AVG(b.score) AS DECIMAL(18,2)),0) '平均分'
    FROM student a 
    LEFT JOIN sc b
    ON a.`S` = b.`S`
    LEFT JOIN course c
    ON b.`C` = c.`C`
    GROUP BY a.`S`,a.`Sname`
    ORDER BY IFNULL(CAST(AVG(b.score) AS DECIMAL(18,2)),0) DESC ;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥30 vmware exsi重置后的密码
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面