【Teradata】grouping和rollup窗口函数
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子句的唯一区别就是:
例: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;
参考文档:
【Teradata】grouping和rollup窗口函数的更多相关文章
- SQL GROUP BY GROUPING SETS,ROLLUP,CUBE(需求举例)
实现按照不同级别分组统计 关于GROUP BY 中的GROUPING SETS,ROLLUP,CUBE 从需求的角度理解会更加容易些. 需求举例: 假如一所学校只有两个系, 每个系有两个专业, 每个专 ...
- Oracle:grouping和rollup
Oracle grouping和rollup简单测试 SQL,,,) group by department_id order by department_id; DEPARTMENT_ID SUM( ...
- Hive高级聚合GROUPING SETS,ROLLUP以及CUBE
scala> import org.apache.spark.sql.hive.HiveContextimport org.apache.spark.sql.hive.HiveContext s ...
- (2.4)DDL增强功能-数据汇总grouping、rollup、cube
参考:https://www.cnblogs.com/nikyxxx/archive/2012/11/27/2791001.html 1.rollup (1)rollup在group by 子句中使用 ...
- MS SQL 分类汇总参数 grouping(**)=1 rollup cubt
转:http://www.111cn.net/database/mssqlserver/43368.htm 本文章介绍了关于sql多级分类汇总实现方法及数据结构,有碰到问题的同学可参考一下. 据库结构 ...
- Oracle分析函数 — sum, rollup, cube, grouping用法
本文通过例子展示sum, rollup, cube, grouping的用法. //首先建score表 create table score( class nvarchar2(20), course ...
- Hive新功能 Cube, Rollup介绍
说明:Hive之cube.rollup,还有窗口函数,在传统关系型数据(Oracle.sqlserver)中都是有的,用法都很相似. GROUPING SETS GROUPING SETS作为GROU ...
- TSQL 分组集(Grouping Sets)
分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回 ...
- SQL基础教程(第2版)第8章 SQL高级处理:8-2 GROUPING运算符
第8章 SQL高级处理:8-2 GROUPING运算符 ■ GROUPING SETS——取得期望的积木● 只使用GROUP BY子句和聚合函数是无法同时得出小计和合计的.如果想要同时得到,可以使用G ...
随机推荐
- C# 读写App.config配置文件
一.C#项目中添加App.config配置文件 在控制台程序中,默认会有一个App.config配置文件,如果不小心删除掉,或者其他程序需要配置文件,可以通过添加得到. 添加步骤:右键项目名称,选择“ ...
- git 上传本地项目
一.下载和安装git 官网下载,默认一直点下一步安装. https://git-scm.com/ 二.在www.gitee.com 注册一个账号 1.点击加号“+”在gitee中新建一个项目 2.下面 ...
- MyEclipse中jsp编码设置
window->preference->Myeclipse->files and editors->jsp,设置编码为utf-8 2.window->preference ...
- Spring,SpringMvc配置常见的坑,注解的使用注意事项,applicationContext.xml和spring.mvc.xml配置注意事项,spring中的事务失效,事务不回滚原因
1.Spring中的applicationContext.xml配置错误导致的异常 异常信息: org.apache.ibatis.binding.BindingException: Invalid ...
- JVM运行时数据区内容简述
JVM运行时数据区分为五个部分:程序计数器.虚拟机栈.本地方法栈.堆.方法区.如下图所示,五部分其中又分为线程共享区域和线程私有区域,下面将分别介绍每一部分. 1. PC程序计数器 程序计数器是一块较 ...
- python面向对象学习(七)单例
目录 1. 单例设计模式 单例设计模式的应用场景 2. __new__ 方法 3. Python 中的单例 只执行一次初始化工作 1. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常 ...
- 微信小程序心得
首先从官方文档给的框架说起,微信小程序官方文档给出了app.js, app.json, app.wxss. 先从这三个文件说起. - app.js 这个文件是整个小程序的入口文件,开发者的逻辑代码在这 ...
- loadrunner 脚本优化-参数化之Parameter List参数取值
脚本优化-参数化之Parameter List参数取值 by:授客 QQ:1033553122 参数取值选项 Select next row Update value on 以上两个选项是改变参数化取 ...
- Jmeter和Loadrunner的异同
1.jmeter的架构跟loadrunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程. 2.分布式中间代 ...
- [20190219]那个更快(11g).txt
[20190219]那个更快(11g).txt --//前几天测试11g Query Result Cache RC Latches时,链接http://blog.itpub.net/267265/v ...