zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    notepad++中使用正则表达式
    python 使用多线程
    EMS查看及修改邮箱发送和接受邮件大小的方法
    EMS修改邮箱容量限制的方法
    EMS查看邮箱容量限制的方法
    EMS批量为用户分配邮箱
    EMS已有用户分配邮箱方法
    EMS创建独立新用户并分配邮箱
    【转载】【zabbix】自定义监控项key值
    Centos6.9 安装zabbix3.4 过程
  • 原文地址:https://www.cnblogs.com/lyy-totoro/p/5966360.html
Copyright © 2011-2022 走看看