2014-11-21 57 views
3

條目數我學習HIVE這些天,遇到一些問題...HIVE如何限制組

我曾名爲SAMPLE表:

USER_ID PRODUCT_ID NUMBER 
1  3   20 
1  4   30 
1  2   25 
1  6   50 
1  5   40 
2  1   10 
2  3   15 
2  2   40 
2  5   30 
2  3   35 

如何使用蜂巢組表由user_id組成,在每個組中按照NUMBER的DESC順序排列記錄,並且在每個組中我想保留最多3條記錄。

我想要的結果是這樣的:?

USER_ID PRODUCT_ID NUMBER(optional column) 
1  6   50 
1  5   40 
1  4   30 
2  2   40 
2  3   35 
2  5   30 

or 

USER_ID PRODUCT_IDs 
1  [6,5,4] 
2  [2,3,5] 

有人能幫助我.. 非常感謝!!!!!!!!!!!!!!!!

回答

4

試試這個,

select user_id,product_id,number 
from(
select user_id,product_id,number, ROW_NUMBER() over (Partition BY user_id) as RNUM 
from (
    select user_id, number,product_id 
    from SAMPLE 
    order by number desc 
) t) t2 
where RNUM <=3 

輸出

1 6 50 
1 5 40 
1 4 30 
2 2 40 
2 3 35 
2 5 30 

蜂巢版本應爲0.11或更高,可我知道,如果你的版本較低

+0

謝謝您的回答。你非常出色,解決方案非常完美!再次感謝,我可以通過您的解決方案完成我的最終項目:) – moonqqqq 2014-11-21 20:43:33