[英]HIVE how to limit number of entries in group
這些天我正在學習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
如何使用HIVE按user_id對表進行分組,並在每個組中按DESBER順序排列記錄NUMBER,並且在每個組中我要保留最多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]
有人能幫助我嗎?非常感謝!!!!!!!!!!!!!!!!
試試這個,
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
hive版本應該是0.11或更高,我可以知道你的版本是否更低
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.