《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 进阶教程》 case:将已有编号方式转换为新的方式并统计的更多相关文章
- SQL进阶随笔--case用法(一)
SQL进阶一整个是根据我看了pdf版本的整理以及自己的见解整理.后期也方便我自己查看和复习. CASE 表达式 CASE 表达式是从 SQL-92 标准开始被引入的.可能因为它是相对较新的技术,所以尽 ...
- (一)《SQL进阶教程》学习记录--CASE
背景:最近用到统计之类的复杂Sql比较多,有种"提笔忘字"的感觉,看书练习,举一反三,巩固加强. (一) <SQL进阶教程>学习记录--CASE (二) <SQL ...
- 《SQL基础教程》+ 《SQL进阶教程》 学习笔记
写在前面:本文主要注重 SQL 的理论.主流覆盖的功能范围及其基本语法/用法.至于详细的 SQL 语法/用法,因为每家 DBMS 都有些许不同,我会在以后专门介绍某款DBMS(例如 PostgreSQ ...
- 《SQL 进阶教程》 case:练习题1-1-3 用 ORDER BY 指定顺序进行排序
select name from greatestsORDER BY case when name ='B' then 1 when name ='A' then 2 when name ='D' t ...
- 《SQL 进阶教程》 case:练习题1-1-1 多列数据的最大值
select name, case when case when x > y then x else y end < z then z else case when x < y th ...
- 《SQL 进阶教程》 case:练习题1-1-2 转换行列——在表头里加入汇总列
select case when sex = 1 then '男性' else '女性' end as '性别', sum(case when name='哈尔滨' THEN population e ...
- 《SQL 进阶教程》 case:在 CASE 表达式中使用聚合函数
1.只加入一个社团的学生的社团id select std_id, max(club_id) from student_clubgroup by std_idhaving count(*) =1---- ...
- 《SQL 进阶教程》case :用一条 SQL 语句进行不同条件的统计
进行不同条件的统计是case表达式的著名用法之一 select name,sum(case when sex = 1 then population else 0 end) as cnt_m,sum( ...
- 《SQL 进阶教程》 case:在 UPDATE 语句里进行条件分支
1.对当前工资为30万日元以上的员工,降薪10%:2.对当前工资为25万日元以上且不满28万日元的员工,加薪20% update salaries set salary = case when sal ...
随机推荐
- TopCoder SRM420 Div1 RedIsGood —— 期望
题目链接:https://vjudge.net/problem/TopCoder-9915 (论文上的题) 题解: 更正:, i>0, j>0 代码如下: #include <ios ...
- LightOJ 1132 Summing up Powers:矩阵快速幂 + 二项式定理
题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意: 给定n.k,求(1K + 2K + 3K + ... + NK) % 2 ...
- (转)linux 打开文件数 too many open files 解决方法
too many open files 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户最大允许打开文件数量 ulimit -a fdipzone@ubuntu: ...
- ES6 generator 基础
参考文档 harmony:generators Generator是ES6的新特性,通过yield关键字,可以让函数的执行流挂起,那么便为改变执行流程提供了可能. 创建Generator functi ...
- 机器学习: Logistic Regression--python
今天介绍 logistic regression,虽然里面有 regression 这个词,但是这其实是一种分类的方法,这个分类方法输出的也是 0-1 之间的一个数,可以看成是一种概率输出,这个分类器 ...
- 使用svg的几种方式
<!-- 图片,背景,框架引入svg文件 --> <img src="test.svg" alt=""> <?xml versio ...
- java-03 方法
#############练习###################### 1.键盘录入乘法表 import java.util.Scanner; public class PrintNN { pub ...
- java定时器,留着用
说明:该定时器作用是 设定定时器首次执行的时间firstTime和执行间隔period,如firstTime=2015-3-25 9:00:00,period=24小时,若程序启动时,已经超过firs ...
- 动态库*.so制作
转自:http://www.2cto.com/os/201308/238936.html 在linux下制作动态库*.so. 1.linux下动态库的制作 //so_test.h #include ...
- jvm学习五: 方法执行过程
方法执行过程:Java各个大版本更新提供的新特性(需要简单了解)