oracle中分组中的ROLLUP和CUBE选项
在进行多列分组统计时,如果直接使用GROUP BY子句指定分组列,则只能生成基于所有分组列的统计结果。如果在GROUP BY子句中使用ROLLUP语句或CUBE语句,除了生成基于所有指定列的分组统计外,还可以生成基于指定列不同子集的统计结果。
使用ROLLUP选项,除了生成基于所有指定列的分组统计外,还对指定的分组列从左开始的每个子集进行统计。例如,GROUP BY ROLLUP(A,B,C)形成的统计包括以下内容。
❑GROUP BY():不基于任何列的整个查询结果的统计。
❑GROUP BY A:基于A列的分组统计。
❑GROUP BY A,B:基于A、B两列的分组统计。
❑GROUP BY A,B,C:基于A、B、C三列的分组统计。
使用CUBE选项,除了生成基于所有指定列的分组统计外,还对指定分组列的所有子集进行统计。例如,GROUP BY CUBE(A,B,C)形成的统计包括以下内容。
❑GROUP BY():不基于任何列的整个查询结果的统计。
❑GROUP BY A:基于A列的分组统计。
❑GROUP BY B:基于B列的分组统计。
❑GROUP BY C:基于C列的分组统计。
❑GROUP BY A,B:基于A、B两列的分组统计。
❑GROUP BY A,C:基于A、C两列的分组统计。
❑GROUP BY B,C:基于B、C两列的分组统计。
❑GROUP BY A,B,C:基于A、B、C三列的分组统计。
例29:查询10、20、30的各个部门中各个职位的平均工资、每个部门的平均工资和所有员工的平均工资。查询结果的形式如表30-3所示。



例30:查询10、20、30的各个部门中各个职位的平均工资、每个部门的平均工资、每个职位的平均工资和所有员工的平均工资。查询结果的形式如表30-4所示。


为了了解每个统计结果是基于哪些列统计而来的,可以使用GROUPING函数,函数返回值为1时,表示该列没有参与统计;函数返回值为0时,表示该列参与了统计。
例31:查询10、20、30的各个部门中各个职位的平均工资、每个部门的平均工资、每个职位的平均工资和所有员工的平均工资,显示每个统计结果是基于哪些列进行的。


7.合并分组查询
在Oracle 11g中,可以将几个单独的分组查询合并成一个分组查询。合并分组查询需要在GROUP BY子句中使用GROUPING SETS选项。
例32:查询各个部门的平均工资和各个职位的平均工资。

GROUPING SETS语句的作用就是使用一个语句得到多个分组统计的结果集。要注意嵌套列与非嵌套列的区别。嵌套列与单个GROUP BY语句作用相同;非嵌套列相当于将多个单独的GROUP BY语句查询结果,采用UNION ALL方式的合并起来。
❑GROUP BY GROUPING SETS((A,B,C)):等价于GROUP BY A,B,C。
❑GROUP BY GROUPING SETS(A,B,C):等价于GROUP BY A UNION ALL GROUPBY B UNION ALL GROUP BY C。
❑GROUP BY GROUPING SETS(A,(B,C)):等价于GROUP BY A UNION ALL GROUPBY B,C。
30.2.4 累计统计查询
在执行统计查询时,可以将聚集函数与OVER函数相结合,进行总体累计统计查询或分组累计统计查询。
1.总体累计统计
总体累计统计的每一个统计结果都是针对之前的所有记录进行的,在OVER函数中使用ORDER BY语句指定统计的顺序,如果不指定ORDER BY语句,则不进行累计统计。
例33:对员工的工资、人数进行总体累计统计。

由统计结果可以看出,累计统计的第一个统计结果是针对第一条记录进行的;第二个统计结果是针对前两条记录进行的;第三个统计结果是针对前三条记录进行的,以此类推。
2.分组累计统计
如果在进行累计统计时,需要按组进行,则需要使用PARTITION子句指定累计统计的分组列。
例34:对各个部门中的员工的工资、人数进行分组累计统计。

oracle中分组中的ROLLUP和CUBE选项的更多相关文章
- SQL 中GROUP BY 、ROLLUP、CUBE 关系和区别
转自:http://www.cnblogs.com/dyufei/archive/2009/11/12/2573974.html 不言自明,看SQL就完全理解了,不需要过多解释,不错,分享之: ROL ...
- ORACLE的分组统计之ROLLUP(一)
Oracle 9i以后,扩展了group by 的功能,能够满足大部分多维数据的分析统计功能,主要表现: 1. rollup,cube,grouping sets 扩展group by字句提供了丰富的 ...
- [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)
原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...
- SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
1.创建表 Staff CREATE TABLE [dbo].[Staff]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Money] [int] NULL, [Cr ...
- oracle group by中cube和rollup字句的使用方法及区别
oracle group by中rollup和cube的区别: Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句. 如果是ROLLUP(A, B, C)的话,先 ...
- Oracle 中运用rollup和cube实现汇总运算
前言.看了很多的随笔博文内容都是关于rollup和cube的用法,发现一个问题,很多都是一样或者转载的,但这都不是重点,重点是,他们写的都太专业化了,直接给一个结论,并没有给出整个推理出这个结论的过程 ...
- Oracle中group by 的扩展函数rollup、cube、grouping sets
Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...
- SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数
SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...
- Oracle的rollup、cube、grouping sets函数
转载自:https://blog.csdn.net/huang_xw/article/details/6402396 Oracle的group by除了基本用法以外,还有3种扩展用法,分别是rollu ...
随机推荐
- LeetCode88 合并有序数组
1. 这道题为简单题目,但是还有需要好好思考的 2. 首先不能使用额外数组合并,不然就没得后文了 3. nums1后面有0填充,且填充数量正好是n,整个数组大小即m+n能够容纳合并后的数据 4.既然要 ...
- VIM处理工具与正则表达式
*本文中/data目录为训练目录 1.在vim中设置TAB缩进为四个字符 打开vim 输入:set tabstop=4 2.复制/etc/rc.d/init.d/functions文件至/tmp/,替 ...
- 基于I2C的AHT20温湿度传感器的数据采集
关于:IC( Inter-- Integrated Circuit)总线是一种由 PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.它是由数据线SDA和时钟SCL构成的串行总线,可 ...
- SpringBoot Actuator — 埋点和监控
项目中看到了有埋点监控.报表.日志分析,有点兴趣想慢慢捣鼓一下 1. 数据埋点 监控机器环境的性能和业务流程或逻辑等各项数据,并根据这些数据生成对应的指标,那么我们就称为数据埋点.比如我们想知道某个接 ...
- 9组-Alpha冲刺-3/6
一.基本情况 队名:不行就摆了吧 组长博客:https://www.cnblogs.com/Microsoft-hc/p/15546622.html 小组人数: 8 二.冲刺概况汇报 卢浩玮 过去两天 ...
- 我罗斯方块最终篇(Block类)
负责的任务 完善Block类的相关函数及变量: 对Block类中函数进行调整改进,并于其他人负责的类相互配合: 对Block类的函数功能进行调试: github项目地址. 效果图 具体可见总篇,一下仅 ...
- JDK的第三个LTS版本JDK17来了
目录 简介 JDK17中的新特性 语言上的新特性 核心库的优化 支持新的平台 预览特性 其他改动 总结 简介 2021年9月JDK17发布了,JDK17是最新的一个LTS版本.所谓LTS版本就是可以得 ...
- Django笔记&教程 2-2 URL详细匹配规则
Django 自学笔记兼学习教程第2章第2节--URL详细匹配规则 点击查看教程总目录 本章第一节中我们简单介绍了URL与View关系 简单概括来说,网页请求的url会通过urls.py里面的urlp ...
- Django 小实例S1 简易学生选课管理系统 9 创建课程模型(model)
Django 小实例S1 简易学生选课管理系统 第9节--创建课程模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 对于课程模块, ...
- 菜鸡的Java笔记 第三十二 - java 静态导入的实现
静态导入的实现 为了理解静态导入的操作产生的动机,下面通过一个具体的代码来观察 范例:现在有一个 Import 的类,这个类中的方法全部都是 static 方法 packa ...