看到一篇不错的文章关于group by聚合的
整理两个例子
例子1
create table testScore
(
tname varchar(30) null,
ttype varchar(10) null,
tscor int null
);
insert into testScore values ('张三','语文',80);
insert into testScore values ('张三','数学',98);
insert into testScore values ('张三','英语',65);
insert into testScore values ('李四','语文',70);
insert into testScore values ('李四','数学',80);
insert into testScore values ('李四','英语',90);
select
tname as '姓名' ,
max(case ttype when '语文' then tscor else 0 end) '语文',
max(case ttype when '数学' then tscor else 0 end) '数学',
max(case ttype when '英语' then tscor else 0 end) '英语'
from testScore
group by tname
结果为:
姓名 | 语文 | 数学 | 英语 |
---|---|---|---|
李四 | 70 | 80 | 90 |
张三 | 80 | 98 | 65 |
例子2
select
tname as '姓名',
case
when ttype='数学' then '理科'
else '文科'
end as '科别',
sum(tscor) as '总分'
from testscore
group by
tname,
case
when ttype='数学' then '理科'
else '文科'
end
结果为:
姓名 | 科别 | 总分 |
---|---|---|
李四 | 文科 | 160 |
李四 | 理科 | 80 |
张三 | 文科 | 145 |
张三 | 理科 | 98 |