首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

笔试的一道题,请赐教,该怎么处理

2012-03-28 
笔试的一道题,请赐教表A 里面有字段学号,姓名,分数,班级。如何写sql语句,把每个班的及格率和优良率显示出来

笔试的一道题,请赐教
表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.班级

热点排行