mysql - HIVE如何限制组中的条目数

标签 mysql hadoop 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 按 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] 

有人可以帮助我吗?.. 非常感谢!!!!!!!!!!!!!!!!!!

最佳答案

试试这个,

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以上,请问你的版本是否低一些

关于mysql - HIVE如何限制组中的条目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27055661/

相关文章:

php - 如何在 PHP 的关联数组中将行创建为列名

php - mysql_fetch_array/row 只取1条数据

nosql - 实时查询/聚合数百万条记录 - hadoop?数据库? Cassandra ?

hadoop - 如何在Hive中将一天的数据填充到整周

hadoop - Hive转HBase的问题

php - 在 sql 查询中定义 ORDER

mysql - 使用记录中的文本粘贴到 Access 窗体控件框中

hadoop - Apache Impala:项目map <string,string>键作为单独的列

hadoop - HDP Sandbox SQOOP 由于权限错误而失败

python - PySpark - Hive 上下文不返回结果但 SQL 上下文返回类似查询