group by rollup

首先引用ITPUB上的总结:

rollup(a,b,c)----------------> 从右到底递减汇总
====>group by a,b,c   (减0次)
UNION ALL
====>group by a,b     (减1次)
UNION ALL
====>group by a       (减2次)
UNION ALL
====>group by null(全部汇总) (全部减掉)

移动了4次,所以有4个级别的汇总,列移动的顺序就是从右到左的,3个列的rollup就有4个group by汇总
这个总结简单明了。

一、group by 后带rollup子句所产生的效果
group by 后 带 rollup 子句的功能可以理解为:先按一定的规则产生多种分组,然后按各种分组统计数据(至于统计出的数据是求和还是最大值还是平均值等这就取决于SELECT后的聚合函数)。因此要搞懂group by 后带rollup子句的用法主要是搞懂它是如何按一定的规则产生多种分组的。另group by后带 rollup 子句所返回的结果 
集,可以理解为各个分组所产生的结果集的并集且没有去掉重复数据。
1、对比没有带rollup 的goup by
例:Group by A,B
产生的分组种数:1种;
即group by A,B
返回结果集:也就是这一种分组的结果集。

2、带rollup但group by与rollup之间没有任何内容
例1:Group by rollup(A,B)
产生的分组种数:3 种;
第一种:group by A,B
第二种:group by A
第三种:group by NULL
(说明:本没有group byNULL的写法,在这里指是为了方便说明,而采用之。含义是:没有分组,也就是所有数据做一个统计。例如聚合函数是SUM的话,那就是对所有满足条件的数据进行求和。此写法的含义下同)
返回结果集:为以上三种分组统计结果集的并集且未去掉重复数据。

例2:Group by rollup(A,B,C)
产生的分组种数:4 种;
第一种:group by A,B,C
第二种:group by A,B
第三种:group by A
第四种:group by NULL
返回结果集:为以上四种分组统计结果集的并集且未去掉重复数据。

3、带rollup但group by与rollup之间还包含有列信息
例1:Group by A , rollup(A ,B)
产生的分组种数:3 种;
第一种:group by A,A,B 等价于 group by A,B
第二种:group by A,A    等价于 group by A
第三种:group by A,NULL  等价于 group by A
返回结果集:为以上三种分组统计结果集的并集且未去掉重复数据。

例2:Group by C,rollup(A,B)
产生的分组种数:3 种;
第一种:group by C,A,B

第二种:group by C,A

第三种:group by C,NULL 等价于 group by C
返回结果集:为以上三种分组统计结果集的并集且未去掉重复数据。

4、带rollup且rollup子句括号内又使用括号对列进行组合
例1:Group by rollup((A,B))
产生的分组种数:2 种;
第一种:group by A,B
第二种:group by NULL
返回结果集:为以上两种分组统计结果集的并集且未去掉重复数据。

例2:Group by rollup(A,(B,C))
产生的分组种数:3 种;
第一种:group by A,B,C
第二种:group by A
第三种:group by NULL
返回结果集:为以上三种分组统计结果集的并集且未去掉重复数据。

转载于:https://www.cnblogs.com/snake-hand/archive/2011/05/15/2452301.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-Class-I:java.util.List

ylbtech-Java-Class-I&#xff1a;java.util.List1.返回顶部 1.1、import java.util.ArrayList;import java.util.List; 1.2、List<Integer> newList new ArrayList<Integer>();newList.add(3); 2、 2.返回顶部1.1、import java.util.*;public class Test{public …

JS中编码的三种方法

在开发中经常需要对用户输入的数据进行编码然后才能通过HTTP请求发送给后台&#xff0c;或者对传递过来的数据进行解码。在JS中原生提供了三种编码/解码方式&#xff0c;分别是 encodeURI、 encodeURIComponent和 escape。 为什么URL需要编码&#xff1f; URI设计要求可移植&…

一个类加载的谜团解决了

面对一个好老问题 我在应用程序服务器上遇到一些类加载问题。 这些库被定义为Maven依赖项&#xff0c;因此被打包到WAR和EAR文件中。 不幸的是&#xff0c;其中一些也已安装到应用程序服务器中&#xff0c;但版本不同。 启动应用程序时&#xff0c;我们遇到了与这些类型的问题相…

vue 隐藏滚动条

element-ui隐藏组件scrollbar&#xff1a; <el-scrollbar style"height:100%"> </el-scrollbar>真正的隐藏滚动条代码在这里&#xff1a;.el-scrollbar__thumb {display: none;}.el-scrollbar__wrap {overflow-x: hidden;overflow-y: auto;}更多专业前端…

希望菜鸟通过博客园的记录和学习,成为一个可以能把自己想发实现的小程序员!...

我是一个学习电气自动化专业的毕业生&#xff0c;工作多年&#xff0c;接触过c语言、vb、单片机、PLC、linux&#xff0c;希望菜鸟通过博客园的记录和学习&#xff0c;成为一个可以能把自己想发实现的小程序员&#xff01; 生活和工作中有许多自己的表格和统计数据&#xff0c;…

获取DOM元素方法小结

在开发中不可避免的需要操作DOM&#xff0c;现在就来总结一下原生的获取DOM的API。 getElementById() 该方法是最常用的通过元素的id属性来获取DOM元素的API&#xff0c;返回一个DOM元素。 <body><div id"div">我是div</div><script type&qu…

推荐:个人时间跟踪工具 ManicTime

在《个人管理 &#xff0d; 目标管理之前&#xff0c;你会时间管理吗》中我介绍的时间管理三阶段之一“对时间的实际去处进行记录”时说过现在有很多时间管理工具&#xff0c;也有人希望我介绍一下我使用的工具&#xff0c;那么我就利用中午休息时间&#xff0c;马上给大家介绍…

Java和甜蜜的科学

当您使用Java进行开发已有15年并且同事要求您帮助他们调试空指针异常时&#xff0c;您不会感到惊讶。 通常&#xff0c;很明显什么是null&#xff0c;唯一要做的就是找出原因。 有时会有些困难&#xff0c;因为有人创建了一系列取消引用的对象。 前几天&#xff0c;我遇到了一…

SQL Server 2005怎样进行性能排错

很少会有偶然的性能下降。设计不良的数据库或工作负载配置不正确的系统会经常导致性能问题。管理员需要能预先阻止或最小化问题的影响&#xff0c;当管理员遇到问题时&#xff0c;应该诊断问题并采取正确操作来修复问题。本文提供了按部就班的指导&#xff0c;通过使用可用的工…

AcWing 207. 球形空间产生器 (高斯消元)打卡

有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。 现在&#xff0c;你被困在了这个n维球体中&#xff0c;你只知道球面上n1个点的坐标&#xff0c;你需要以最快的速度确定这个n维球体的球心坐标&#xff0c;以便于摧毁这个球形空间产生器。 输入格式 第一行是一个整数…

jQuery中的ready

基于jQuery v1.8.3 在js与DOM交互之前要确保DOM已经加载构建完成&#xff0c;在jQuery中都是使用 (fn)或者(document).ready(fn)来确保自己写的代码在DOM构建完成之后执行。 那么jQuery的ready事件内部怎么实现的呢&#xff1f; 通过阅读源码&#xff08;line:842 ~ 898&…

JVM PermGen –您在哪里?

这篇文章介绍了JVM内存结构的一些基础知识&#xff0c;并快速窥视了PermGen&#xff0c;以了解自Java SE 8出现以来它已消失的地方。 裸基础 JVM只是系统上运行的另一个进程&#xff0c;魔术始于java命令。 像任何OS进程一样&#xff0c;它需要内存才能运行。 记住– JVM本身是…

vue 开发过程中遇到的问题

1. gitlab团队协作开发 2. element ui 问题集锦 3. 使用vue和ElementUI快速开发后台管理系统 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

python6-函数

转载于:https://www.cnblogs.com/WIU1905/p/11101249.html

Windows Phone 7.1 “芒果” SDK Beta 下载地址

Windows Phone 7.1 “芒果” SDK Beta 今天早上发布&#xff0c;第一时间下载体验。功能果然激动人心。 下载地址&#xff1a; 离线ISO请点我&#xff0c; 在线安装请点我。转载于:https://www.cnblogs.com/finehappy/archive/2011/05/25/2056849.html

Windows系统安装 ffmpeg

下载及解压 ffmpeg官方下载地址&#xff1a;https://ffmpeg.org/download.html 下载好后将其解压至你想保存的位置中。 环境变量设置 打开Windows设置&#xff0c;在搜索框输入&#xff1a;系统高级设置。 新建环境变量&#xff0c;并输入bin目录具体位置。 安装检查 按住 w…

基于webpack3.x从0开始搭建React开发环境

在开发react单页面的时候无可避免的要使用到webpack打包&#xff0c;今天就从零开始搭建一个react的开发环境。 需要实现的功能有&#xff1a; 使用Babel编译ES6编译.jsx文件实现热更新编译CSS预处理文件Less&#xff0c;CSS后处理文件PostCSS提取公共的CSS样式到一个公共的文…

死机简单配置

编写整个框架的目的是为了处理应用程序的配置。 我更喜欢一种简单的方法。 如果通过配置我们的意思是“ 部署之间可能有所不同的所有内容 ”&#xff0c;那么我们应该尝试使配置保持简单。 在Java中&#xff0c;最简单的选项是不起眼的属性文件。 属性文件的缺点是&#xff0c…

VMWARE虚拟机环境网卡3种模式介绍

NAT模式&#xff1a;相当于你的虚拟机通过你的宿主机上网 桥接模式&#xff1a;相当于你的虚拟机和宿主机同在一个局域网通过静态屁访问网络 仅主机模式&#xff1a;虚拟机只能和宿主机通信&#xff0c;但宿主机不会为虚拟机提供任何路由服务&#xff0c;不能连接到实际网络中转…

一个网站的诞生- MagicDict开发总结2 [ACCESS的烦恼]

说到数据库&#xff0c;有很多很多选择&#xff0c;除了MS-SQL&#xff0c;Oracle&#xff0c;SQLite&#xff0c;MySql&#xff0c;这些大家都非常熟悉的同学&#xff0c;还有DB2&#xff0c;IMSDB&#xff08;灰常灰常古老的数据库&#xff0c;用在OS390等Mainframe中&#x…