码迷,mamicode.com
首页 > 编程语言 > 详细

hive 分组排序,topN

时间:2017-05-27 13:37:53      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:分组   ber   最大   over   获取   count   row   test   select   

                                        hive 分组排序,topN

语法格式:row_number() OVER (partition by COL1 order by COL2 desc ) rank
partition by:类似hive的建表,分区的意思;
order by :排序,默认是升序,加desc降序;
rank:表示别名
表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

-- 分组排序
-- 求某用户日期最大的3天
select a.* from(
select p_day,muuid,row_number() over(partition by muuid order by p_day) rank
from test
group by p_day,muuid)a
where a.rank <=3;
---- 获取每天充值数的前3名
select * from(
select p_day,muuid,c row_number over(partition by p_day order by p_day,c desc) ord
from(
select p_day,muuid,count(1) c from test where p_day>‘2017-09-09‘
group by p_day,muuid
) t1
)t2
where ord <= 3;

hive 分组排序,topN

标签:分组   ber   最大   over   获取   count   row   test   select   

原文地址:http://www.cnblogs.com/yyy-blog/p/6912336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!