一个sql难题,求高人指点

来源:百度知道 编辑:UC知道 时间:2024/06/08 16:28:06
现有如下情况,表a:有字段class(班级),student(学生),grade(成绩),remark(备注)
现要对这个表的remark字段打个标记,班上成绩前20%的学生打:nice,20%到50%打good,50%到~打:bad。这个如何实现,求教高人指点,谢谢!!!在线等候。
oracle数据库

update a set a.remark=case when a.grade>b.grade*0.2 then 'nice' when a.grade between b.grade*0.2 and b.grade*0.5 then 'good' when a.grade<b.grade*0.5 then 'bad' end
from a inner join (select class,sum(grade) as grade from a group by class) b on a.class=b.class

以上,希望对你有所帮助!

在企业管理器里使用SQL语句,可以查询、判断、执行,然后update表里的remark那一列即可。具体 语句我不会写。

update a set remark=case when grade in (select top (select count(*) from a)/5 grade from a) then 'nice' else when grade in (select top (select count(*) from a)/2 grade from a order by grade desc) then 'good' else 'bad' end

第一步,为成绩在前20%的打“nice”
update A SET remark='nice' where (select top count(grade)*0.2 from A Order by grade)
第二步,为成绩在后50%的打“bad”

update A SET remark='bad' where (select top count(grade)*0.5 from A Order by grade desc)

第三步,为成绩在前20%-50% 打“good”
update A SET remark='good' where remark not in (&#