when case group by 的用法集合

 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;

 

posted @ 2014-11-14 00:25  残阳飞雪  阅读(812)  评论(0编辑  收藏  举报