Oracle高级查询之GROUP BY
2019独角兽企业重金招聘Python工程师标准>>>
开篇一笑:两个男人在饭店里边吃饭边聊天,甲:“我不得不在这儿吃饭,因为我妻子不想做饭。”乙:“您真幸运,我之所在这吃饭,是因为我妻子一定要做饭。”
为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的。
现在客户的需求是统计部门中每种工作的工资总额,最后还需要统计所有人的工资总数,相信这样的需求对大家来说还是比较简单的,很快就能写出SQL语句,如下:
- select deptno, job, sum(sal)
- from scott.emp
- group by deptno, job
- order by deptno
- union all
- select null deptno, null job, sum(sal) from scott.emp;
客户拍了一下脑袋瓜(当成西瓜拍了),再统计每个部门的工资数吧。tnnd,我加一个union all搞定,修改后的SQL语句如下:
- select deptno, job, sum(sal)
- from scott.emp
- group by deptno, job
- union all
- select deptno, null job, sum(sal)
- from scott.emp
- group by deptno
- union all
- select null deptno, null job, sum(sal) from scott.emp;
老师批注:为什么要写的这么啰嗦呢?其实有更简介的语句可以实现同样的功能,看好了:
- select deptno, job, sum(sal) from scott.emp group by rollup(deptno, job);
客户的需求就好像肾虚的人尿频一样(谁说客户是上帝,上帝哪来那么多的需求?),再统计每个工作类型的工资总额吧。tnnd,我再加一个union all再搞定,修改后的SQL语句如下:
- select deptno, job, sum(sal)
- from scott.emp
- group by deptno, job
- union all
- select deptno, null job, sum(sal)
- from scott.emp
- group by deptno
- union all
- select null deptno, job, sum(sal)
- from scott.emp
- group by job
- union all
- select null deptno, null job, sum(sal) from scott.emp;
老师再批注:老师在讲你有没有在听,根本就没有在听嘛!再教你一个简洁的SQL语句,请看:
- select grouping(job),deptno, job, sum(sal)
- from scott.emp
- group by cube(deptno, job)
- order by deptno;
客户想了想说,只要统计部门工资总额和工作类型工资总额就可以了(我每天都徘徊在杀人和忍住不杀之间),我fucking减掉一个union all搞定,修改后的SQL语句如下:
- select null deptno, job, sum(sal)
- from scott.emp
- group by job
- union all
- select deptno, null job, sum(sal) from scott.emp group by deptno;
老师再再批注:你小子算是彻底没救了,但我是老师啊,决不放弃任何一个学生。再再教你最后一招,仔细看下面:
- select grouping(deptno),grouping(job),grouping_id(job), deptno, job, sum(sal)
- from scott.emp
- group by grouping sets(deptno, job);
忙活半天总算把客户的需求都满足了,稍微松了一口气,不过既然学到新东西,我们有必要最后总结一下。
GROUP BY ROLLUP(A,B,C):首先对(A,B,C)进行GROUP BY,然后对(A,B)进行GROUP BY,然后是(A)进行GROUP BY, 最后对全表进行GROUP BY操作。
GROUP BY CUBE(A,B,C):首先对(A,B,C)进行GROUP BY,然后依次对(A,B)、(A,C)、(A)、(B,C)、(B)、(C)进行GROUP BY,最后对全表进行GROUP BY操作。
GROUP BY GROUPING SETS(A,B,C):依次对(C)、(B)、(A)进行GROUP BY。
转载于:https://my.oschina.net/bluesroot/blog/222464
Oracle高级查询之GROUP BY相关推荐
- 傅老师课堂:Oracle高级查询之GROUP BY
为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. 现在客户的需求是统计部门中每种工作的工资总额,最后还需要统计所有人的工资总数,相信这样的需求对大家来说还是比较简单的, ...
- oracle高级查询案例,oracle高级查询(实例基于scott用户四张表)
oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...
- Oracle高级查询之over(partition by...) 分组排序
Oracle高级查询之over(partition by...) 分组排序 一.rank()/dense_rank() over(partition by ...order by ...) 现在客户有 ...
- Oracle高级查询
使用Oracle特有的查询语法, 可以达到事半功倍的效果 1. 树查询 create table tree ( id number(10) not null primary key, ...
- oracle—高级查询
Sql基础 数据库语言 数据操纵语言:DML (data manipulation language) select insert update delete merge 数据定义语言:DDL(dat ...
- Oracle高级查询,over 用法
注:标题中的红色order by是说明在使用该方法的时候必须要带上order by. 一.rank()/dense_rank() over(partition by ...order by ...) ...
- Oracle高级查询之over(partition by..)
查看原文:http://ibloger.net/article/248.html 为了方便学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. create table EMP (em ...
- 傅老师课堂:Oracle高级查询之OVER (PARTITION BY ..)
[size=large][size=large][size=large]开篇一笑:某日一妹子对男友说:在一起这么久了你都没有夸过我漂亮,今天我要你夸夸我,男子想了一会看着女友鸡冻的说道:我硬了. 为了 ...
- 傅老师课堂:Oracle高级查询之OVER (PARTITION BY ..) 1
为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. 注:标题中的红色order by是说明在使用该方法的时候必须要带上order by. 一.rank()/dense_r ...
- oracle 查询最高分,oracle高级查询
幕课oracle学习笔记 --!!!scott用户 --一.分组查询 --1.常用的分组函数:AVG(平均数),SUM,MIN,MAX,COUNT,WM_CONCAT(行转列) select avg( ...
最新文章
- 正确预测适合自己的职业
- 圣杯布局与双飞翼布局全解
- msm8953之串口dts配置
- 北斗导航 | 高精度GNSS Correction Service国际标准化
- jquery 判断元素显示或隐藏
- 【转】一句话的设计模式
- c语言程序设计电加热炉,基于80C52单片机的电加热数字恒温控制系统设计
- public,protected,private
- 1个月时间整理了2019年上千道Java面试题,近500页文档!
- JavaScript自适应图片大小的弹出窗口
- 《非常网管:网络管理从入门到精通(修订版)》一1.4 TCP/IP
- 果园机器人作文开头_果园机器人作文
- Xcode dSYM 文件
- Cisco ISO 计划命令 kron实现配置定时自动备份
- 智慧养老整体解决方案
- access 数据库写按日期查询SQL
- xman 2018夏solo题
- SAP-PP 主生产计划MPS
- 阅读笔记:双核心Opteron处理器
- C++STL之map详解
热门文章
- c语言200行代码大作业含菜单,2018级C语言大作业 - 坦克动荡
- java 命令行 库_java以太坊库web3j文档
- layui多文件上传讲解_layui文件上传的实际应用实例
- Idea Debug多线程不进断点问题处理
- npm 常见用法小结
- MFC选择目录和多个文件
- 《音乐达人秀:Adobe Audition实战200例》——实例5 将电视音乐节目伴音转录到电脑里...
- [Asp.Net web api]基于自定义Filter的安全认证
- 如何利用ansible callback插件对执行结果进行解析
- 说说IUnitOfWork~DbContext对象的创建应该向BLL层公开