1.group by后带rollup子句

先按一定的规则产生多种分组,然后返回各个分组所产生的结果集的并集,且没有去掉重复数据(统计出的数据是求和还是最大值还是平均值等这就取决于SELECT后的聚合函数)。下面举例说明:

例1:Group by rollup(A ,B)

//返回如下3个分组的统计结果集的并集,且未去掉重复数据。
第一种:group by A,B
第二种:group by A
第三种:group by NULL (即没有分组,所有数据做一个统计)

例2:Group by rollup(A ,B,C)

//返回如下4种分组统计结果集的并集,且未去掉重复数据
第一种:group by A,B,C
第二种:group by A,B
第三种:group by A
第四种:group by NULL

例3:Group by C , rollup(A ,B)

//group by和rollup间还有其它列C,返回如下3种分组统计结果集的并集,且未去掉重复数据
第一种:group by C,A,B
第二种:group by C,A
第三种:group by C,NULL 等价于group by C

例4:Group by rollup(A ,(B,C))

//多列被括号括在一起时,视为一个整体。返回如下3中分组统计结果的并集,且未去掉重复数据
第一种:group by A,B,C
第二种:group by A
第三种:group by NULL

2.group by后带cube子句

group by后带rollup子句与group by后带cube子句的唯一区别就是:

 带cube子句的group by会产生更多的分组统计数据。cube后的列有多少种组合(注意组合是与顺序无关的)就会有多少种分组。

例:Group by cube(A ,B,C)

//返回8种分组统计结果集的并集,且未去掉重复数据。
第一种:group by A,B,C
第二种:group by A,B
第三种:group by A,C
第四种:group by B,C
第五种:group by C
第六种:group by B
第七种:group by A
第八种:group by NULL

 3.group by后带grouping sets子句 

group by后带grouping sets子句效果,就是只返回按单个列分组后的统计数据,不返回多个列组合分组的统计数据。

例1:Group by grouping sets(A )

//返回1种分组统计结果集
第一种:group by A

例2:Group by grouping sets(A ,B)

//返回2种分组统计结果集的并集,且未去掉重复数据。
第一种:group by A
第二种:group by B

例3:Group by grouping sets (A ,B,C)

//返回3种分组统计结果集的并集,且未去掉重复数据。
第一种:group by A
第二种:group by B
第三种:group by C
 

CREATE MULTISET VOLATILE TABLE VTX,NO FALLBACK,NO LOG(
FST_Lvl_Brch_Org_Id VARCHAR(20)
,HQ_Org_Id VARCHAR(20)
,Sec_Brch_Org_Id VARCHAR(20)
,Inn_Org_Id VARCHAR(20)
,COL_6 INT
)NO PRIMARY INDEX
ON COMMIT PRESERVE ROWS; INSERT INTO VTX VALUES ('','','','',1);
INSERT INTO VTX VALUES ('','','','',2);
INSERT INTO VTX VALUES ('','','','',3);
INSERT INTO VTX VALUES ('','','','',4);
INSERT INTO VTX VALUES ('','','','',5);
INSERT INTO VTX VALUES ('','','','',6);
INSERT INTO VTX VALUES ('','','','',7);
INSERT INTO VTX VALUES ('','','','',8);
INSERT INTO VTX VALUES ('','','','',9); SELECT COALESCE(COALESCE(DECODE(FST_Lvl_Brch_Org_Id,'',HQ_Org_Id,FST_Lvl_Brch_Org_Id),COALESCE(Sec_Brch_Org_Id,Inn_Org_Id)),'')
,Sec_Brch_Org_Id
,DECODE(FST_Lvl_Brch_Org_Id,'',HQ_Org_Id,FST_Lvl_Brch_Org_Id)
,Inn_Org_Id
,SUM(COL_6)
FROM VTX
WHERE Sec_Brch_Org_Id=''
GROUP BY 1,
GROUPING SETS(Sec_Brch_Org_Id,DECODE(FST_Lvl_Brch_Org_Id,'',HQ_Org_Id,FST_Lvl_Brch_Org_Id),ROLLUP(Inn_Org_Id))
ORDER BY 1,2,3,4;

参考文档:

group by后加rollup子句的用法以及与cube和grouping sets子句的区别

SQL基础之GROUPING

GROUP函数-GROUP_ID,GROUPING,GROUPING_ID

【Teradata】grouping和rollup窗口函数的更多相关文章

  1. SQL GROUP BY GROUPING SETS,ROLLUP,CUBE(需求举例)

    实现按照不同级别分组统计 关于GROUP BY 中的GROUPING SETS,ROLLUP,CUBE 从需求的角度理解会更加容易些. 需求举例: 假如一所学校只有两个系, 每个系有两个专业, 每个专 ...

  2. Oracle:grouping和rollup

    Oracle grouping和rollup简单测试 SQL,,,) group by department_id order by department_id; DEPARTMENT_ID SUM( ...

  3. Hive高级聚合GROUPING SETS,ROLLUP以及CUBE

    scala> import org.apache.spark.sql.hive.HiveContextimport org.apache.spark.sql.hive.HiveContext s ...

  4. (2.4)DDL增强功能-数据汇总grouping、rollup、cube

    参考:https://www.cnblogs.com/nikyxxx/archive/2012/11/27/2791001.html 1.rollup (1)rollup在group by 子句中使用 ...

  5. MS SQL 分类汇总参数 grouping(**)=1 rollup cubt

    转:http://www.111cn.net/database/mssqlserver/43368.htm 本文章介绍了关于sql多级分类汇总实现方法及数据结构,有碰到问题的同学可参考一下. 据库结构 ...

  6. Oracle分析函数 — sum, rollup, cube, grouping用法

    本文通过例子展示sum, rollup, cube, grouping的用法. //首先建score表 create table score( class  nvarchar2(20), course ...

  7. Hive新功能 Cube, Rollup介绍

    说明:Hive之cube.rollup,还有窗口函数,在传统关系型数据(Oracle.sqlserver)中都是有的,用法都很相似. GROUPING SETS GROUPING SETS作为GROU ...

  8. TSQL 分组集(Grouping Sets)

    分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回 ...

  9. SQL基础教程(第2版)第8章 SQL高级处理:8-2 GROUPING运算符

    第8章 SQL高级处理:8-2 GROUPING运算符 ■ GROUPING SETS——取得期望的积木● 只使用GROUP BY子句和聚合函数是无法同时得出小计和合计的.如果想要同时得到,可以使用G ...

随机推荐

  1. C# 读写App.config配置文件

    一.C#项目中添加App.config配置文件 在控制台程序中,默认会有一个App.config配置文件,如果不小心删除掉,或者其他程序需要配置文件,可以通过添加得到. 添加步骤:右键项目名称,选择“ ...

  2. git 上传本地项目

    一.下载和安装git 官网下载,默认一直点下一步安装. https://git-scm.com/ 二.在www.gitee.com 注册一个账号 1.点击加号“+”在gitee中新建一个项目 2.下面 ...

  3. MyEclipse中jsp编码设置

    window->preference->Myeclipse->files and editors->jsp,设置编码为utf-8 2.window->preference ...

  4. Spring,SpringMvc配置常见的坑,注解的使用注意事项,applicationContext.xml和spring.mvc.xml配置注意事项,spring中的事务失效,事务不回滚原因

    1.Spring中的applicationContext.xml配置错误导致的异常 异常信息: org.apache.ibatis.binding.BindingException: Invalid ...

  5. JVM运行时数据区内容简述

    JVM运行时数据区分为五个部分:程序计数器.虚拟机栈.本地方法栈.堆.方法区.如下图所示,五部分其中又分为线程共享区域和线程私有区域,下面将分别介绍每一部分. 1. PC程序计数器 程序计数器是一块较 ...

  6. python面向对象学习(七)单例

    目录 1. 单例设计模式 单例设计模式的应用场景 2. __new__ 方法 3. Python 中的单例 只执行一次初始化工作 1. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常 ...

  7. 微信小程序心得

    首先从官方文档给的框架说起,微信小程序官方文档给出了app.js, app.json, app.wxss. 先从这三个文件说起. - app.js 这个文件是整个小程序的入口文件,开发者的逻辑代码在这 ...

  8. loadrunner 脚本优化-参数化之Parameter List参数取值

    脚本优化-参数化之Parameter List参数取值 by:授客 QQ:1033553122 参数取值选项 Select next row Update value on 以上两个选项是改变参数化取 ...

  9. Jmeter和Loadrunner的异同

    1.jmeter的架构跟loadrunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程. 2.分布式中间代 ...

  10. [20190219]那个更快(11g).txt

    [20190219]那个更快(11g).txt --//前几天测试11g Query Result Cache RC Latches时,链接http://blog.itpub.net/267265/v ...