oracle rollup分组没有数据时为0_hive 分析函数 grouping sets,cube,rollup

今天记录一下在OLAP中常用的分析函数,这几个函数可以大大简化sql,使代码更优美,效率更高

准备数据:test表

school	        grade	 user
hf第一中学	一年级	张三1
hf第一中学	二年级	张三2
hf第一中学	三年级	张三3
hf第一中学	四年级	张三4
hf第一中学	五年级	张三5
hf第一中学	六年级	张三6
hf第二中学	一年级	李四1
hf第二中学	二年级	李四2
hf第二中学	三年级	李四3
hf第二中学	四年级	李四4
hf第二中学	五年级	李四5
hf第二中学	六年级	李四6
hf第三中学	一年级	王二1
hf第三中学	二年级	王二2
hf第三中学	三年级	王二3
hf第三中学	四年级	王二4
hf第三中学	五年级	王二5
hf第三中学	六年级	王二6
  • grouping sets 在一个group by 的聚合查询中,根据不同的维度进行组合,我们可以选择性的去对维度聚合,也可以聚合所有维度,当维度上卷聚合时,维度值为 null,可用ifnull函数去赋值,得到一个新的汇总维度,其中grouping__id代表一个分组的唯一id
select 
ifnull(school,'全学校') as school,
ifnull(grade,'全年级') as grade,
count(user) as num,
grouping__id
from test 
group by 
school,
grade
grouping sets((school,grade),grade,())

上面的代码相当于

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值