hive 分组排序,topN

Posted 吊车尾88

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

hive分组取随机数

使用dataframe解决spark TopN问题:分组排序取TopN

hive 和 mysql 求解分组 top n

hive 和 mysql 求解分组 top n

3.1.4MySQL__数据库分组,拼接查询,日期函数,日期加减,间隔,数值四舍五入,排序,分组,having筛选,分组TopN,流程控制函数,

text Hive topN,分组topN问题解决方案