hive 分組排序,topN

2022-08-17 17:48:11 字數 757 閱讀 7989

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

)t2where ord <= 3;

Hive分組排序取top N

案列 求每個班級每科成績的第1名的學生。樣例資料如下 這個是典型的分組,組內排序求top n的問題,可以利用rank函式來解決。語法如下 rank over partition by col1 order by col2 排序時出現相等的值時會有相同的序列值,但會跳躍的排序,如 1,1,3,4,5,...

分組Top N問題 三 sql及Hive實現

同上篇hadoop mapreduce 實現分組top n介紹一樣,這次學習hive實現分組top n。在資料處理中,經常會碰到這樣乙個場景,對錶資料按照某一字段分組,然後找出各自組內最大的幾條記錄情形。針對這種分組top n問題,我們利用hive mapreduce等多種工具實現一下。對類如下us...

分組Top N 問題

今天面試,面試官給了這樣乙個場景 有兩張表,一張表存放車隊id,班組id,司機id 另一種表存放司機id,運營時間,運營里程 要查詢出7月份每個車隊每個班組裡的 top 3 這就要用到row number 函式 首先按需求建兩張表 create table demo of topn car comp...