hive group by聚合函式增強

2022-01-10 08:23:46 字數 1350 閱讀 5684

1.grouping sets

grouping sets子句都可以根據union連線的多個group by查詢進行邏輯表示

select a,b,sum(c)from tab1 group by a,b grouping sets((a,b),a,b,())

等價於select a,b,sum(c)from tab1 group by a,b

union

select a,null,sum(c)from tab1 group by a,null

union

select null,b,sum(c)from tab1 group by null,b

union

select null,null,sum(c)from tab1

2.grouping__id

注意是兩個下劃線相連,說明聚合結果是屬於(grouping sets)哪乙個子集的的。

select key, value, grouping__id,count(*)

from t1

group by key, value

grouping sets((key,value),key,value)

;等價於

select key, value,1,count(*) -- 屬於第1個grouping sets子集,即(key,value)

from t1

group by key, value

union

select key, null,2,count(*) -- 屬於第2個grouping sets子集,即key

from t1

group by key

union

select null, value,3,count(*) -- 屬於第3個grouping sets子集,即value

from t1

group by value

3.with cube

cube是是group by欄位的所有組合

group by a,b,c with cube

等同於group by a,b,c grouping sets((a,b,c),(a,b),(b,c), (a,c),(a),(b),(c),())

4.with rollup

rollup子句與group by一起用於計算維度的層次結構級別的聚合。

group by a,b,c,with rollup

等同於group by a,b,c grouping sets((a,b,c),(a,b),(a),())

官網文件

SQL 聚合函式 非聚合函式

聚合函式 聚合函式就是對一組值進行計算後返回單個值 即分組 聚合函式在計算時都會忽略空值 null 所有的聚合函式均為確定性函式。即任何時候使用一組相同的輸入值呼叫聚合函式執行後的返回值都是相同的,無二義性。2 聚合開窗函式 聚合函式加上 over 開窗函式就是聚合開窗函式。create table...

Hive Group By 常見錯誤

遇到這麼乙個需求,輸入資料為乙個id對應多個name,要求輸出資料為id是唯一的,name隨便取乙個就可以。執行以下hive ql語句 1 2 3 4 5 6 select sid,class id from table2 group by sid 會報錯 1 failed error insema...

Hive Group By 常見錯誤

遇到這麼乙個需求,輸入資料為乙個id對應多個name,要求輸出資料為id是唯一的,name隨便取乙個就可以。執行以下hive ql語句 12 3456 select sid,class id from table2 group by sid 會報錯 1failed error insemantic ...