SQL-rollup、cube(hive)

本文介绍了Hive中的三种聚合操作:GROUPING SETS、CUBE和ROLLUP。GROUPING SETS用于根据不同的维度组合进行聚合,等价于多个GROUP BY结果的UNION ALL。CUBE则执行所有维度组合的聚合,而ROLLUP是CUBE的子集,从最左侧维度开始逐级聚合,提供了层次化的汇总信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先举个例:

group by WITH ROLLUP

mysql> select dep,pos,avg(sal) from employee group by dep,pos with rollup;  
+------+------+-----------+  
| dep | pos | avg(sal) |  
+------+------+-----------+  
| 01 | 01 | 1500.0000 |  
| 01 | 02 | 1950.0000 |  
| 01 | NULL | 1725.0000 |  
| 02 | 01 | 1500.0000 |  
| 02 | 02 | 2450.0000 |  
| 02 | NULL | 2133.3333 |  
| 03 | 01 | 2500.0000 |  
| 03 | 02 | 2550.0000 |  
| 03 | NULL | 2533.3333 |  
| NULL | NULL | 2090.0000 |  

首先会根据dep变量,将原始数据分为三个01,02,03三个组,从数据表上看,第5,6行是一个聚合,group by WITH ROLLUP会在每个分组后面加上本组类的信息,di7行数据就是5,6行数据聚合所执行avg(sal)所得的结果,依次类推,02,03也是一样,同时在最后,会将全部的分组聚合。

Hive:

GROUPING SETS

在一个GROUP BY查询中,根据不同的维度组合进行聚合,等价于将不同维度的GROUP BY结果集进行UNION ALL

SELECT 
month,
day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING__ID 
FROM lxw1234 
GROUP BY month,day 
GROUPING SETS (month,day) 
ORDER BY GROUPING__ID; 
month      day            uv      GROUPING__ID
------------------------------------------------
2015-03    NULL            5       1 
2015-04    NULL            6       1
NULL       2015-03-10      4       2
NULL       2015-03-12      1       2
NULL       2015-04-12      2       2
NULL       2015-04-13      3       2
NULL       2015-04-15 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值