西安网站建设网,同ip网站做301,拍拍网站开发,房产信息查询官网首先引用ITPUB上的总结#xff1a; rollup(a,b,c)---------------- 从右到底递减汇总group by a,b,c (减0次)UNION ALLgroup by a,b (减1次)UNION ALLgroup by a (减2次)UNION ALLgroup by null(全部汇总) (全部减掉)移动了4次#xff0c;所… 首先引用ITPUB上的总结 rollup(a,b,c)---------------- 从右到底递减汇总group by a,b,c (减0次)UNION ALLgroup by a,b (减1次)UNION ALLgroup by a (减2次)UNION ALLgroup 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之间没有任何内容例1Group by rollup(A,B)产生的分组种数3 种第一种group by A,B第二种group by A第三种group by NULL说明本没有group byNULL的写法在这里指是为了方便说明而采用之。含义是没有分组也就是所有数据做一个统计。例如聚合函数是SUM的话那就是对所有满足条件的数据进行求和。此写法的含义下同)返回结果集为以上三种分组统计结果集的并集且未去掉重复数据。例2Group 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之间还包含有列信息例1Group 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返回结果集为以上三种分组统计结果集的并集且未去掉重复数据。例2Group 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子句括号内又使用括号对列进行组合例1Group by rollup((A,B))产生的分组种数2 种第一种group by A,B第二种group by NULL返回结果集为以上两种分组统计结果集的并集且未去掉重复数据。例2Group 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