码迷,mamicode.com
首页 > 数据库 > 详细

按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

时间:2019-01-26 23:41:47      阅读:689      评论:0      收藏:0      [点我收藏+]

标签:desc   个数   null   数字   span   显示   写法   pre   from   

MySQL的写法:

SELECT p.学生ID,p.数据库,p.企业管理,p.英语,p.有效课程数,ROUND(p.总分/(CASE WHEN p.有效课程数 = 0 THEN 1 ELSE p.有效课程数 END)) 有效平均分
FROM 
(SELECT  t.学生ID 学生ID,
      t.数据库 数据库,
        t.企业管理 企业管理,
         t.英语 英语,
       (CASE WHEN t.数据库 IS NULL THEN 0 ELSE 1 END)+(CASE WHEN t.企业管理 IS NULL THEN 0 ELSE 1 END)+(CASE WHEN t.英语 IS NULL THEN 0 ELSE 1 END) 有效课程数,
      IFNULL(t.数据库,0)+IFNULL(t.企业管理,0)+IFNULL(t.英语,0) 总分
FROM 
     (SELECT stu.sid 学生ID, s.c 数据库,q.c 企业管理,y.c 英语
      FROM student stu 
          LEFT JOIN (SELECT sc.sid n,sc.score c FROM sc ,course c WHERE sc.cid=c.cid AND c.cName =数据库) s ON stu.sid=s.n
          LEFT JOIN (SELECT sc.sid n,sc.score c FROM sc ,course c WHERE sc.cid=c.cid AND c.cName =企业管理) q ON stu.sid=q.n
          LEFT JOIN (SELECT sc.sid n,sc.score c FROM sc ,course c WHERE sc.cid=c.cid AND c.cName =英语) Y ON stu.sid=y.n )t
)p
ORDER BY 有效平均分 DESC;

MySQL判断为null,写法为is null,而不是  t.数据库 = NULL 

IFNULL(expr1,expr2)

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值

按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

标签:desc   个数   null   数字   span   显示   写法   pre   from   

原文地址:https://www.cnblogs.com/zizhuo/p/10325247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!