前几天,看到一个群友用WITH ROLLUP运算符.由于自个儿没用过,看到概念及结果都云里雾里的,所以突然来了兴趣对生成结果测了一番. 一.概念: WITH CUBE:生成的结果集显示了所选列中值的所有组合的聚合. WITH ROLLUP:生成的结果集显示了所选列中值的某一层次结构的聚合. GROUPING:当行由 WITH CUBE或WITH ROLLUP运算符添加时,该函数将导致附加列的输出值为 1:当行不由 CUBE 或 ROLLUP 运算符添加时,该函数将导致附加列的输出值为 0.仅在与…
1.用 CUBE 汇总数据 CUBE 运算符生成的结果集是多维数据集.多维数据集是事实数据的扩展,事实数据即记录个别事件的数据.扩展建立在用户打算分析的列上.这些列被称为维.多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格. CUBE 运算符在 SELECT 语句的 GROUP BY 子句中指定.该语句的选择列表应包含维度列和聚合函数表达式.GROUP BY 应指定维度列和关键字 WITH CUBE.结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚…
oracle group by中rollup和cube的区别:  Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句. 如果是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)…
oracle group by中rollup和cube的区别: Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句.CUBE ROLLUP 是用于统计数据的. 实验使用SCOTT用户的EMP表测试 1.仅使用GROUP BY分组,GROUP BY后的单列可以用括号,也可以不用.以下两种写法作用一样: SCOTT@bys1>SELECT deptno, avg(sal) FROM emp  GROUP BY deptno; SCOTT@bys1>SELECT…
偶然在网上看到一篇文章,讲到数据汇总,提到了CUBE,感觉有些晦涩,想试着自己表述一下.同时,个人也认为CUBE还是很有用的,对SQL或数据分析感兴趣的小伙伴不妨了解一下,或许有用呢! 先设定个需求,想要分别按[性别].[籍贯].[年龄]或[成绩级别]统计下表中学生的数量,再进一步,需要将这些条件相结合统计,同时满足某两项或更多条件的学生数量.数据表格如下: 我们可以逐层来理解[GROUP BY][WITH ROLLUP][WITH CUBE]如何来完成数据汇总 第一层:[GROUP BY] […
Group By Group By 谁不会啊?这不是最简单的吗?越是简单的东西,我们越会忽略掉他,因为我们不愿意再去深入了解它. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极速入门(三)--Oracle 分析函数 SQL 高级查询--(层次化查询,递归) 今天就带大家了解一下Group By 的新用法吧. ROLL UP ROLL UP 搭配 GROUP BY 使用,可以为每一个分组返回一个小计行,为所有分组返回一个总计行. 直接看例子,我们有以下数据…
转自:https://docs.oracle.com/cd/E11882_01/server.112/e25554/aggreg.htm#DWHSG8618 CUBE Syntax CUBE appears in the GROUP BY clause in a SELECT statement. Its form is: SELECT … GROUP BY CUBE (grouping_column_reference_list) Example 21-4 CUBE SELECT channe…
摘自 http://blog.itpub.net/26977915/viewspace-734114/ 在报表语句中经常要使用各种分组汇总,rollup和cube就是常用的分组汇总方式. 第一:group by rollup 1.如果使用诸如group by rollup(A,B,C)的方式分组,那么返回的分组结果是(A,B,C) (A,B) (A) (NULL) 一共四种结果.即从右到左递减,最后来个合计. 例如: SQL> select * from t; YEARS     MONTHS…
要使用CUBE,首先要了解GROUP BY. 其实CUBE和ROLLUP区别不太大,只是在基于GROUP BY 子句创建和汇总分组的可能的组合上有一定差别,CUBE将返回的更多的可能组合.如果在GROUP BY子句中有N个列或者是有N个表达式的话,SQLSERVER在结果集上会返回2的N-1次幂个可能组合. CUBE和ROLLUP之间的区别在于: CUBE 生成的结果集显示了所选列中值的所有组合的聚合. ROLLUP生成的结果集显示了所选列中值的某一层次结构的聚合 ROLLUP就是将GROUP…
其实还是写一个Demo 比较好 USE tempdb IF OBJECT_ID( 'dbo.T1' , 'U' )IS NOT NULL BEGIN DROP TABLE dbo.T1; END; GO CREATE TABLE dbo.T1 ( id INT , productName ) , price MONEY , num INT , amount INT , operatedate DATETIME ) GO DECLARE @i INT DECLARE @rand MONEY DEC…