同一个表中有多个groupby

时间:2018-01-25 21:44:52

标签: sql hive aggregate-functions hiveql

我在HIVE表中有4列

Level1 String
Level2 String
Level3 String
Cnt INT

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

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

因此,对于不同列中的所有级别组合,最终表应该具有sum(cnt)

我最初考虑单独进行,然后加入表格,但我不知道如何进行这样的联接,或者甚至是否可能。

1 个答案:

答案 0 :(得分:2)

虽然目前还不清楚您的最终预期输出应该是什么,但您可以使用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