笔试的一道题,请赐教
表A 里面有字段学号,姓名,分数,班级。
如何写sql语句,把每个班的及格率和优良率显示出来。
分数>=60为及格;分数>=80为优良。
[解决办法]
select aa.班级,
cast((sum(aa.不及格)/count(aa.学号)*100)as varchar)+'%' as 不及格率,
cast(sum(aa.及格)/count(aa.学号)*100 as varchar)+'%' as 及格率,
cast(sum(aa.优秀)/count(aa.学号)*100as varchar)+'%' as 优秀率
from
(
select a.班级,a.学号,
(case when a.分数 between 0 and 60 then 1 else 0 end) 不及格,
(case when 分数 between 60 and 80 then 1 else 0 end) 及格,
(case when 分数 between 80 and 100 then 1 else 0 end) 优秀
from tmp.dbo.class a
)aa
group by aa.班级