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

一个很纠结的sql有关问题

2012-09-28 
一个很纠结的sql问题求助需要求出平均成绩在0-60,60-80,80-100的人占总人数比例分别是多少。用SQL语句怎么

一个很纠结的sql问题求助
需要求出平均成绩在0-60,60-80,80-100的人占总人数比例分别是多少。
用SQL语句怎么写啊,求大虾帮助。

平均成绩为这个人的所有成绩除以他的所有科目数量。
有一个数据表如下所示
姓名 课程 成绩
张三 语文 78
张三 数学 94
李斯 语文 75
李斯 英文 80
....

 

[解决办法]

SQL code
with t(姓名,课程,成绩) as(select '张三','语文',78union all select '张三','数学',94union all select '李斯','语文',75union all select '李斯','英文',80)select    convert(varchar(20),convert(numeric(7,2),sum(case when 平均成绩>=0 and 平均成绩<60 then 1 else 0 end)*1.0/count(1)*100))+'%' [0-60占百分比],    convert(varchar(20),convert(numeric(7,2),sum(case when 平均成绩>=60 and 平均成绩<80 then 1 else 0 end)*1.0/count(1)*100))+'%' [60-80占百分比],    convert(varchar(20),convert(numeric(7,2),sum(case when 平均成绩>=80 and 平均成绩<100 then 1 else 0 end)*1.0/count(1)*100))+'%' [80-100占百分比]from (select avg(成绩) 平均成绩 from t group by 姓名) t1/*0-60占百分比              60-80占百分比             80-100占百分比--------------------- --------------------- ---------------------0.00%                 50.00%                50.00%*/ 

热点排行