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 '其他' end
from 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 ORIGIN
PID0001 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_PRICE
25.62 T恤 0
35.62 炒锅 0
45.62 西瓜 0
55.62 鲈鱼 1
75.62 鲫鱼 1
65.62 草鱼 1