select t2.* from(
select pid,uid,cnt,row_number() over (partition by pid order by cnt desc ) as rank from
(
select pid,uid,count(uid) as cnt from visit2 group by pid,uid order by pid,cnt desc
) as t1
) as t2
where t2.rank <= 3;
相关函数
)Rank
(1)RANK() 排序相同时会重复,总数不会变
(2)DENSE_RANK() 排序相同时会重复,总数会减少
(3)ROW_NUMBER() 会根据顺序计算
2) OVER():指定分析函数工作的数据窗口大小&#

本文详细介绍了在Hive中实现TopN的方法,包括Rank、Dense_Rank和Row_Number等函数,以及order by、distribute by、sort by和cluster by的使用。还讨论了Hive中的优化策略,如利用limit关键字和sort by limit配合提高SELECT TOP N的效率,避免全表排序。此外,文章强调了distribute by在预分区和聚集操作中的作用,并指出其与group by的区别。
最低0.47元/天 解锁文章
584

被折叠的 条评论
为什么被折叠?



