case when then else end
2017-08-15 本文已影响0人
竞技等级几点叫你你呢
给定一张表
国家 | 人口 |
---|---|
中国 | 600 |
印度 | 600 |
美国 | 200 |
韩国 | 600 |
澳大利亚 | 700 |
英国 | 400 |
求这样的结果集:
州 | 人口 |
---|---|
亚洲 | 3600 |
北美洲 | 400 |
大洋洲 | 1400 |
欧洲 | 800 |
--
建表sql:
CREATE TABLE country (
name VARCHAR(255) PRIMARY KEY,
population INT
);
INSERT INTO country (NAME, population)
VALUES
('中国', 600),
('印度', 600),
('美国', 200),
('韩国', 600),
('澳大利亚', 700),
('英国', 400);
sql:
SELECT sum(c.population) as '人口',
CASE c.`name`
when '中国' then '亚洲'
when '印度' then '亚洲'
when '美国' then '北美洲'
when '韩国' then '亚洲'
when '澳大利亚' then '大洋洲'
when '英国' then '欧洲'
else '其他'
end as '州'
from country c
GROUP BY
CASE c.`name`
when '中国' then '亚洲'
when '印度' then '亚洲'
when '美国' then '北美洲'
when '韩国' then '亚洲'
when '澳大利亚' then '大洋洲'
when '英国' then '欧洲'
else '其他' end;
结果: