--建立测试环境
Create table 表
(班级 Varchar(10),
姓名 Nvarchar(10),
成绩 Int)
--插入数据
Insert 表 Values('A', N'张三', 89)
Insert 表 Values('B', N'里斯', 75)
Insert 表 Values('A', N'王五', 63)
Insert 表 Values('B', N'找刘', 93)
Insert 表 Values('C', N'理亏', 66)
--测试
Select
班级,
(Select IsNull(Count(*),0) from 表 Where 成绩<60 And 班级=A.班级) As N'成绩<60人数',
(Select IsNull(SUM(成绩),0) from 表 Where 成绩<60 And 班级=A.班级) As N'成绩<60总分',
(Select IsNull(Count(*),0) from 表 Where 成绩<=80 And 成绩>=60 And 班级=A.班级) As N'成绩60至80人数',
(Select IsNull(SUM(成绩),0) from 表 Where 成绩<=80 And 成绩>=60 And 班级=A.班级) As N'成绩60至80总分',
(Select IsNull(Count(*),0) from 表 Where 成绩<=100 And 成绩>80 And 班级=A.班级) As N'成绩81至100人数',
(Select IsNull(SUM(成绩),0) from 表 Where 成绩<=100 And 成绩>80 And 班级=A.班级) As N'成绩81至100总分'
from 表 A
Group By 班级
Order By 班级
--删除测试环境
Drop table 表
--结果
/*
班级 成绩<60人数 成绩<60总分 成绩60至80人数 成绩60至80总分 成绩81至100人数 成绩81至100总分
A 0 0 1 63 1 89
B 0 0 1 75 1 93
C 0 0 1 66 0 0
*/
select 班级 ,sum(case when 成绩<=60 then 1 else 0 end ) as '成绩<60人数',
sum(case when 成绩<=60 and then 成绩 else 0 end ) as '成绩<60总分',
sum(case when 60<成绩<=80 and then 1 else 0 end ) as '成绩60至80人数',
sum(case when 60<成绩<=80 and then 成绩 else 0 end ) as '成绩60至80总分,
sum(case when 81<成绩<=100 and then 1 else 0 end ) as '成绩81至100人数,
sum(case when 81<成绩<=100 and then 成绩 else 0 end ) as '成绩81至100总分'
from table
group by 班级
select 班级,sum(case when 成绩<60 then 1 else 0 end) as 成绩<60人数
,sum(case when 成绩<60 then 成绩 else 0 end) as 成绩<60总分
,sum(case when 成绩 between 60 and 80 then 1 else 0 end) as 成绩60至80人数
,sum(case when 成绩 between 60 and 80 then 成绩 else 0 end) as 成绩60至80总分
,sum(case when 成绩 between 81 and 100 then 1 else 0 end) as 成绩81至100人数
,sum(case when 成绩 between 81 and 100 then 成绩 else 0 end) as 成绩81至100总分
from yourtable group by 班级
select 班级,sum(case when 成绩<60 then 1 else 0 end) as 成绩<60人数
,sum(case when 成绩<60 then 成绩 else 0 end) as 成绩<60总分
,sum(case when 成绩 between 60 and 80 then 1 else 0 end) as 成绩60至80人数
,sum(case when 成绩 between 60 and 80 then 成绩 else 0 end) as 成绩60至80总分
,sum(case when 成绩 between 81 and 100 then 1 else 0 end) as 成绩81至100人数
,sum(case when 成绩 between 81 and 100 then 成绩 else 0 end) as 成绩81至100总分
from yourtable group by 班级