• 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
  • 相关阅读:
    No configuration found for this host:al
    相对路径和绝对路径
    工具类学习
    JRebel没有自动部署的解决方法
    之前写了http解析高德地图时,json转对象搞了半天 , 今天同事用GSON把json转对象,一句代码就解决了,代码如下
    导入项目时遇到的问题
    解析Http请求调用高德地图的api(货车路径规划)
    二进制中的符号位的区分以及表示
    svn提交及更新时的常见问题
    JDBC 连接池下重构操作
  • 原文地址:https://www.cnblogs.com/lyy-totoro/p/5966360.html
Copyright © 2020-2023  润新知