MySQL 使用group by和case when 的兩個例子
阿新 • • 發佈:2019-02-10
例子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 |