按平均成绩从高到低显示所有学生的“数据库”“企业管理”“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分
Posted zizhuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按平均成绩从高到低显示所有学生的“数据库”“企业管理”“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分相关的知识,希望对你有一定的参考价值。
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,,数据库,企业管理,英语,有效课程数,有效平均分的主要内容,如果未能解决你的问题,请参考以下文章
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件
键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件