首页 > 代码库 > hive 分组排序,topN
hive 分组排序,topN
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。