case when 用法

it2022-05-05  121

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

 

转载于:https://www.cnblogs.com/lyy-totoro/p/5966360.html


最新回复(0)