zoukankan      html  css  js  c++  java
  • 《SQL 进阶教程》 case:将已有编号方式转换为新的方式并统计

    SQL 权威指南
    SQL 解惑
    在进行非定制化统计时,需要将已有编号方式转换为另外一种便于分析的方式进行统计需求

    select
    case
    when name='哈尔滨' then '黑龙江'
    when name='大庆' then '黑龙江'
    when name='齐齐哈尔' then '黑龙江'
    when name='长春' then '吉林'
    when name='吉林' then '吉林'
    when name='沈阳' then '辽宁'
    when name='大连' then '辽宁'
    when name='葫芦岛' then '辽宁'
    else '其他'
    end as province,sum(population)
    from city_population
    GROUP BY
    case
    when name='哈尔滨' then '黑龙江'
    when name='大庆' then '黑龙江'
    when name='齐齐哈尔' then '黑龙江'
    when name='长春' then '吉林'
    when name='吉林' then '吉林'
    when name='沈阳' then '辽宁'
    when name='大连' then '辽宁'
    when name='葫芦岛' then '辽宁'
    else '其他' end


    select
    case
    when name='哈尔滨' then '黑龙江'
    when name='大庆' then '黑龙江'
    when name='齐齐哈尔' then '黑龙江'
    when name='长春' then '吉林'
    when name='吉林' then '吉林'
    when name='沈阳' then '辽宁'
    when name='大连' then '辽宁'
    when name='葫芦岛' then '辽宁'
    else '其他'
    end as province,sum(population)
    from city_population
    group by province

    严格来说,这种写法违反标准sql规范,因为Group by 比select 语句先知,
    所以group by 子句中引用在select 子句里定义的别称是不被允许的,
    事实上,在oracle、DB2、SQLServer 等数据库采用这种写法时就会出错


    将人口按照适当的级别进行分类统计
    select
    case
    when population < 100 then '1'
    when population >=100 and population <200 then '2'
    when population >=200 and population < 400 then '3'
    else '4' end as pop_class,count(*) as cnt
    from city_population
    GROUP BY pop_class

  • 相关阅读:
    持有你自己的权力
    《活在恩典中》:我们所寻求的是什么?
    修学文钞 | 道证法师怎么学印光大师《文钞》
    致初学者:印祖文钞修学次第建议
    印光大师指定的文钞入门篇目
    sql注入在线检测(sqlmapapi)
    【转】Kali Linux 新手折腾笔记
    JAVA开发-我的第一个webScan扫描器
    JAVA开发--游戏24点
    JAVA开发--U盘EXE恢复工具
  • 原文地址:https://www.cnblogs.com/newlangwen/p/10541034.html
Copyright © 2011-2022 走看看