2014-11-21 2 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 

Как я могу использовать Hive для таблицу group_ user_id и в каждой группе заказывать записи по порядку DESC из 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] 

Может кто-нибудь мне помочь .. Большое спасибо !!!!!!!!!!!!!!!!

ответ

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