同一个 table 中的多个 groupby

Multiple groupby in the same table

我在 HIVE 中有 4 列 tables

Level1 String
Level2 String
Level3 String
Cnt INT

我想在同一个 table 中分别聚合多个级别的 cnt,即

@Level1
@Level1, Level2
@Level3
@level1,level2,level3

所以最后的 table 应该有 sum(cnt) 用于单独列中的所有级别组合。

我最初考虑单独进行,然后加入 table,但我不确定如何进行这样的加入,或者是否可能。

虽然不清楚您最终的预期输出应该是什么样子,但您可以利用 GROUPING SETS

select level1,level2,level3,count(*)
 FROM yourtable
    GROUP BY level1,level2,level3  
GROUPING SETS ( (Level1), ( Level1, Level2), (Level3), (level1,level2,level3) );

您还可以使用 GROUPING_ID,Grouping 等函数以及此查询的输出来满足您的最终聚合。

参考:Enhanced Aggregation