1. case、group by组合用法
首先看看表中的内容 (COUNTRY 、 POPULATION、 SEX)
COUNTRY POPULATION SEX中国 340 1中国 260 2美国 45 1美国 55 2加拿大 51 1加拿大 49 2英国 40 1英国 60 2法国 150 1法国 150 2日本 150 1日本 100 2德国 100 1德国 100 2墨西哥 25 1墨西哥 25 2印度 100 1印度 150 2
1.1 利用case、group by语句统计亚洲、北美洲的人口数量:
select sum(population), case country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' else '其他' endfrom Table_A group by case country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END;
统计每个结果如下:
600 其他1100 亚洲250 北美洲
1.2 统计每个国家的男性人口、女性人口。(有点纵表变横表的意思,两行成一行进行显示)
select country, sum(case when sex = 1 then population else 0 end) "男性人口", sum(case when sex = 2 then population else 0 end) "女性人口" from Table_A group by country;
统计每个结果如下:
英国 40 60德国 100 100印度 100 150加拿大 51 49墨西哥 25 25中国 340 260法国 150 150美国 45 55日本 150 100
2. 嵌套case 语句(end 后接表达式:end > 60)
首先看看表的内容
PRODUCTID PRODUCTNAME PRODUCTPRICE QUANTITY CATEGORY DESPERATION ORIGINPID0001 T恤 25.62 100 衣服 促销产品 北京PID0002 炒锅 35.62 100 厨具 促销产品 北京PID0003 西瓜 45.62 100 水果 促销产品 北京PID0004 鲈鱼 55.62 100 鱼类 商品描述004 北京PID0004 鲫鱼 75.62 100 鱼类 商品描述005 北京PID0004 草鱼 65.62 100 鱼类 商品描述006 北京
利用嵌套case语句实现如下功能:价格低于40元的产品,打上低价格的标识,价格大于等于40元的产品加上10元之后如果大于60元,则打上高价格的标识。
select productprice,productname, case when (case when productprice < 40 then 0 else productprice + 10 end > 60) then 1 else 0 end as is_high_price from PRODUCTINFO
打上标识的结果:
PRODUCTPRICE PRODUCTNAME IS_HIGH_PRICE25.62 T恤 035.62 炒锅 045.62 西瓜 055.62 鲈鱼 175.62 鲫鱼 165.62 草鱼 1