case when 用法

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

 

posted on 2016-10-16 12:20  Mrs.Totoro  阅读(1335)  评论(0编辑  收藏  举报

导航