天天看點

Hive(九)--兩次group by的小例子

需求是這樣的,原始資料第一列是使用者的id,第二列是使用者的行為,想按使用者有過的行為點,對使用者做聚合,并且統計各種行為組合的使用者數量

比如下表

x1 y1

x1 y2

x2 y1

x2 y2

x3 y1

通過sql合并成

x1 y1,y2

x2 y1,y2

x3 y1

然後再按新的列group by,結果是

y1,y2 2個

y1 1個

代碼這樣寫:

--假設表名為tb

select

ys, 

count

(*)

from

(

select

x, to_char(wm_concat(y)) ys

from

tb

group

by

x  

) w

group

by

ys

;

繼續閱讀