SQL问题,高分求解

来源:百度知道 编辑:UC知道 时间:2024/06/19 07:22:37
Acess数据库中仅有一张staff表;
关系模式:staff(staff,c1,c2,c3,c4,c5)
staff为员工名,c1到c5为各项成绩
求查询语句:
最终成绩分为四类,一类为五门都及格,二类为一门不及格,三类为两门不及格,其余为四类。按类次在每一类中按总分从高到低排序。

在线等,望尽快得到答案,若是嫌分不够,可以另外开贴相赠。
谢谢各位大哥的帮助,小弟不才,得蒙midasblesshj的帮助,顺利解决问题,在此谢过各位

select A.*,B.class,B.totals from staff A,
(Select staff,iif(degree=5,'一类',iif(degree=4,'二类',iif(degree=3,'三类','四类'))) as class,totals
from
(SELECT staff,iif(c1>=60,1,0) +iif(c2>=60,1,0) +iif(c3>=60,1,0)+iif(c4>=60,1,0) +iif(c5>=60,1,0) as degree,c1+c2+c3+c4+c5 as totals FROM staff)) B
where A.staff=B.staff
order by totals,class DESC
如果你的成绩是字符类型:将iif(c1>=60,1,0) +iif(c2>=60,1,0) +iif(c3>=60,1,0)+iif(c4>=60,1,0) +iif(c5>=60,1,0) 换成
iif(Cdbl(c1)>=60,1,0) +iif(Cdbl(c2)>=60,1,0) +iif(Cdbl(c3)>=60,1,0)+iif(Cdbl(c4)>=60,1,0) +iif(Cdbl(c5)>=60,1,0) 并且c1+c2+c3+col4+col5 部分换成Cdbl(c1)+Cdbl(c2)+Cdbl(c3)+Cdbl(c4)+Cdbl(c5),所有的成绩都要有值,并且能正确转换,如果有空的你得手动去原表处理下,不然转换会出错的
如果还不是你要的效果,就调整下order by部分

用iif+switch

select staff,COl2
from
(select staff,switch(col=0,"1类",col=1,"2类",col=2,"3类",true,"4类") as COl2,sumcol
from