1、用那个以前大家都熟悉的例子,要求是依旧下面的表格求每个大洲的人口总和
国家(countrcoungry) | 人口(population) |
中国 | 600 |
美国 | 100 |
加拿大 | 100 |
英国 | 200 |
法国 | 300 |
日本 | 250 |
德国 | 200 |
墨西哥 | 50 |
印度 | 250 |
用 case when 的方法如下
SELECT SUM(population) as popul,CASE countryWHEN '中国' THEN '亚洲'WHEN '印度' THEN '亚洲'WHEN '日本' THEN '亚洲'WHEN '美国' THEN '北美洲'WHEN '加拿大' THEN '北美洲'WHEN '墨西哥' THEN '北美洲'ELSE '其他' END as areaFROM CpGROUP BY area
洲 | 人口 |
亚洲 | 1100 |
北美洲 | 250 |
其他 | 700 |
同理增加一个字段性别
国家(country) | 性别(sex) | 人口(population) |
中国 | 1 | 340 |
中国 | 2 | 260 |
美国 | 1 | 45 |
美国 | 2 | 55 |
加拿大 | 1 | 51 |
加拿大 | 2 | 49 |
英国 | 1 | 40 |
英国 | 2 | 60 |
按照国家和性别进行分组,得出结果如下
国家 | 男 | 女 |
中国 | 340 | 260 |
美国 | 45 | 55 |
加拿大 | 51 | 49 |
英国 | 40 | 60 |
select country,sum(case when sex='1' then population else 0 end),sum (case when sex='2' then population else 0 end)from cspgroup by country;