hive grouping sets的正确打开方式

8 篇文章 0 订阅
-- 为了偷懒想使用grouping sets,但是正确打开该函数,还是有难度的

-- 1. 不可以有多个表格相同列名的情况;如果多表格列名相同的,需更改;uid、col_a、col_b都需要改成不同的名字
-- 2. 不可以在select之后有表格别名的情况,比如a.col_a_1是不允许的;但是因为列名都不同,没有关系
-- 3. select之后用来aggregate(聚合)的字段,不可以进入计算;所以需要新加入col_b_1_1,而不是直接使用 col_b_1
-- 4. tips:如果不想有聚合字段,grouping sets后面可以加 ()空括弧

select col_a_1
, col_b_1
, count(distinct uid_1)
, count(distinct uid_2)
, count(distinct if(col_b_1_1 = 'some_string', uid_1, null))
-- 不可以是col_b_1
(
select uid as uid_1
, col_a as col_a_1
, col_b as col_b_1
, col_b as col_b_1_1
from table_1
) a

left join

(
select uid as uid_2
, col_a as col_a_2
, col_b as col_b_2 
from table_2
) b

on a.uid_1 = b.uid_2
and a.col_a_1 = b.col_a_2
and a.col_b_1 = b.col_b_2
group by col_a_1
, col_b_1
grouping sets
(col_a_1, col_b_1, (), (col_a_1, col_b_1))
;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值