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. 使用Task异步执行方法_多线程_应用程序池

    偶然遇到在执行登录的方法需要发送消息队列导致登录时间过长的问题,从网上查了一些方法,先将一个简单的异步处理程序的小例子展示出来,供大家参考: 备注:该方法是从应用程序程序所在的线程池中获取线程,第一次 ...

  2. C# 实现Jwtbearer Authentication

    Jwtbearer Authentication 什么是JWT JWT(JSON Web Token), 顾名思义就是在Web上以JSON格式传输的Token(RFC 7519). 该Token被设计 ...

  3. 12个敏捷过程的小提示Tips

    12个敏捷过程的小提示Tips 1. 可视化一切. 在团队里使用Scrum白板.同时走廊过道上也会挂上显示信息的白板,这些信息可以是公司战略.软件缺陷等等.可视化的好处是,员工经过这些白板时,能够了解 ...

  4. c# 接口的协变和逆变

    如果派生类只是用于输出值,那么这种结构化的委托有效性之间的常数关系叫做协变 就是创建一个派生类委托对象 让派生类赋值给基类对象 协变关键字out 对期望传入基类时允许传入派生对象的特性叫逆变  逆变关 ...

  5. 什么是kibana?

    简介 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作.您可以使用 Kibana 对 Elasticsearch ...

  6. 定时任务Task

    使用注解@EnableScheduling开启定时任务,会自动扫描 定义@Component作为组件被容器扫描 对于EnableScheduling是注解在启动类上,很多开关配置都会再启动类中进行设置 ...

  7. 支持MySelf

    编程思路分享,BUG上报,主推Java Web方向与软件架构设计,不定期推出系列针对性基础教程,项目均放置于GitHub,个人运营精力有限,感谢支持. 交流群:628793702 个人技术公众,欢迎关 ...

  8. 深入理解SpringCloud与微服务构建

    旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81742534 目录 一.SpringClou ...

  9. hihoCoder编程练习赛67

    题目1 : 序列 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个正整数 n, P,求满足以下两个条件的长度为 n 的序列 ai 个数: 1. 1 ≤ ai ≤ ...

  10. nginx 转将http跳转到https

    #websoceket 使用map map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream abc. ...