1、用那个以前大家都熟悉的例子,要求是依旧下面的表格求每个大洲的人口总和
国家(countrcoungry) | 人口(population) |
中国 | 600 |
美国 | 100 |
加拿大 | 100 |
英国 | 200 |
法国 | 300 |
日本 | 250 |
德国 | 200 |
墨西哥 | 50 |
印度 |
250 |
用 case when 的方法如下
SELECT SUM(population) as popul, CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END as area FROM Cp GROUP 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 csp group by country;