增强的聚合 Cube和Grouping 和Rollup
这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数。

GROUPING SETS
在一个GROUP BY查询中,根据不同的维度组合进行聚合,等价于将不同维度的GROUP BY结果集进行UNION ALL,
其中的GROUPING__ID,表示结果属于哪一个分组集合。

selectuser_type,sales,count(user_id) as pv,GROUPING__ID
from order_detail
group by user_type,sales
GROUPING SETS(user_type,sales)
ORDER BY GROUPING__ID;+------------+--------+-----+---------------+--+
| user_type  | sales  | pv  | grouping__id  |
+------------+--------+-----+---------------+--+
| old        | NULL   | 3   | 1             |
| new        | NULL   | 7   | 1             |
| NULL       | 6      | 1   | 2             |
| NULL       | 5      | 2   | 2             |
| NULL       | 3      | 2   | 2             |
| NULL       | 2      | 2   | 2             |
| NULL       | 1      | 3   | 2             |
+------------+--------+-----+---------------+--+selectuser_type,sales,count(user_id) as pv,GROUPING__ID
from order_detail
group by user_type,sales
GROUPING SETS(user_type,sales,(user_type,sales))
ORDER BY GROUPING__ID;+------------+--------+-----+---------------+--+
| user_type  | sales  | pv  | grouping__id  |
+------------+--------+-----+---------------+--+
| old        | NULL   | 3   | 1             |
| new        | NULL   | 7   | 1             |
| NULL       | 1      | 3   | 2             |
| NULL       | 6      | 1   | 2             |
| NULL       | 5      | 2   | 2             |
| NULL       | 3      | 2   | 2             |
| NULL       | 2      | 2   | 2             |
| old        | 3      | 1   | 3             |
| old        | 2      | 1   | 3             |
| old        | 1      | 1   | 3             |
| new        | 6      | 1   | 3             |
| new        | 5      | 2   | 3             |
| new        | 3      | 1   | 3             |
| new        | 1      | 2   | 3             |
| new        | 2      | 1   | 3             |
+------------+--------+-----+---------------+--+

CUBE
根据GROUP BY的维度的所有组合进行聚合。

selectuser_type,sales,count(user_id) as pv,GROUPING__ID
from order_detail
group by user_type,sales
WITH CUBE
ORDER BY GROUPING__ID;+------------+--------+-----+---------------+--+
| user_type  | sales  | pv  | grouping__id  |
+------------+--------+-----+---------------+--+
| NULL       | NULL   | 10  | 0             |
| new        | NULL   | 7   | 1             |
| old        | NULL   | 3   | 1             |
| NULL       | 6      | 1   | 2             |
| NULL       | 5      | 2   | 2             |
| NULL       | 3      | 2   | 2             |
| NULL       | 2      | 2   | 2             |
| NULL       | 1      | 3   | 2             |
| old        | 3      | 1   | 3             |
| old        | 2      | 1   | 3             |
| old        | 1      | 1   | 3             |
| new        | 6      | 1   | 3             |
| new        | 5      | 2   | 3             |
| new        | 3      | 1   | 3             |
| new        | 2      | 1   | 3             |
| new        | 1      | 2   | 3             |
+------------+--------+-----+---------------+--+

ROLLUP
是CUBE的子集,以最左侧的维度为主,从该维度进行层级聚合。

selectuser_type,sales,count(user_id) as pv,GROUPING__ID
from order_detail
group by user_type,sales
WITH ROLLUP
ORDER BY GROUPING__ID;+------------+--------+-----+---------------+--+
| user_type  | sales  | pv  | grouping__id  |
+------------+--------+-----+---------------+--+
| NULL       | NULL   | 10  | 0             |
| old        | NULL   | 3   | 1             |
| new        | NULL   | 7   | 1             |
| old        | 3      | 1   | 3             |
| old        | 2      | 1   | 3             |
| old        | 1      | 1   | 3             |
| new        | 6      | 1   | 3             |
| new        | 5      | 2   | 3             |
| new        | 3      | 1   | 3             |
| new        | 2      | 1   | 3             |
| new        | 1      | 2   | 3             |
+------------+--------+-----+---------------+--+

Cube和Grouping 和Rollup相关推荐

  1. oracle group by 两项,Oracle中group by 的扩展函数rollup、cube、grouping sets

    Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...

  2. oracle 分组统计效率,Oracle 分组求和函数(rollup、cube、grouping sets)

    文章目录 1 场景 1.1 概念 1.2 思维导图 1.3 数据准备 2 知识点小结 2.1 group by 2.2 grouping sets:单独分组 2.3 rollup:累计累加 2.4 c ...

  3. group by后面加rollup、cube、grouping sets分别代表什么含义

    group by 众所周知,group by 语法是对给定的字段进行分组统计,最后得到一个分组统计数据. 满足以下要求:select语句中的字段必须为分组字段或者聚合函数(如:sum() .max() ...

  4. 【Teradata】grouping和rollup窗口函数

    1.group by后带rollup子句 先按一定的规则产生多种分组,然后返回各个分组所产生的结果集的并集,且没有去掉重复数据(统计出的数据是求和还是最大值还是平均值等这就取决于SELECT后的聚合函 ...

  5. group by 字句的扩展+rollup字句+cube字句+grouping()函数

    1rollup字句 rollup字句扩展group by字句,为每一个分组返回一条小计记录,并为全部分组返回总计 列如:rollup字句获取每个部门的工资总计 select d.dname,sum(e ...

  6. WITH ROLLUP、WITH CUBE、GROUPING语句的应用

    作者:Bobby0322 CUBE 和 ROLLUP 之间的区别在于: CUBE 运算符生成的结果集是多维数据集.多维数据集是事实数据的扩展,事实数据即记录个别事件的数据.扩展建立在用户打算分析的列上 ...

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

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

  8. Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP

    GROUPING SETS 该关键字可以实现同一数据集的多重group by操作.事实上GROUPING SETS是多个GROUP BY进行UNION ALL操作的简单表达,它仅仅使用一个stage完 ...

  9. Hive分析窗口函数系列文章

    分析窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越 ...

最新文章

  1. Java面试笔试题大汇总一(最全+详细答案)
  2. 3.1)深度学习笔记:机器学习策略(1)
  3. toj 4319 盒子游戏
  4. 互联网和大数据是什么意思_大数据和互联网的区别是什么意思
  5. 黑客攻防技术宝典Web实战篇第2版—第8章 攻击访问控制
  6. asp.net core 官方文档
  7. cesium cesium is not defined
  8. 计算机开机切换用户界面,win7开机登录界面怎么设置?win7更换开机画面壁纸解决办法...
  9. excel转换成html预览,Excel转换成html
  10. 传统企业互联网转型升级
  11. Win7自动登录,免密码
  12. 鸿蒙支持lOS,读了鸿蒙 OS 的代码后,我发现优秀项目都有这个共性!
  13. 电信卡 LTE 无法短信发送
  14. 基于STM32的多功能MP3设计 毕业设计(论文)开题报告
  15. 苹果mac休眠快捷键_史上最详细的苹果Macbook快捷键使用
  16. linux蓝牙语音遥控器,蓝牙智能遥控器介绍
  17. arm linux not syncing,Kernel panic - not syncing: No init found(busybox制作根文件
  18. vscode中编写代码时tab键不能用
  19. 小程序输入框字数统计
  20. CORDIC算法计算复数相位角(含verilog源码)

热门文章

  1. [记录] ---阿里云java.io.IOException: Connection reset by peer的问题
  2. java 中violate_Java中的Volatile关键字
  3. 广西 启动计算机教案,广西版六年级下册信息技术教案.docx
  4. JAVA入门级教学之(异常机制的原理到底是什么)
  5. function里面可以写function吗_和田玉不戴的时候,可以长时间泡在水里面吗?
  6. c语言putchar_C语言实现变色的心!连机器都会变心,呵,男人!
  7. 几个改变世界的java工具
  8. hdu java_HDU-java实现1176
  9. 执行公式_一学就会,一吃就瘦,超简单又好执行的减肥食谱公式!
  10. springcloud 网关_Spring Cloud 系列之 Netflix Zuul 服务网关(二)