hive的分析函式--rank over,Row_Number() over,dense_rank()的區別
阿新 • • 發佈:2018-12-08
hive中三個排序函式rank、row_number、dense_rank日常中比較常用到,今天來說說三者的區別:
1、rank()函式
此排序方法進行排序時,相同的排序是一樣的,而且下一個不同值是跳著排序的。
2、row_number()函式
此方法不管排名是否有相同的,都按照順序1,2,3…..n
3、dense_rank()函式
此方法對於排名相同的名次一樣,且後面名次不跳躍
案例:
資料結構如下:
程式碼例項:
-
--三種函式進行對比
-
--rank:
-
select
id
-
,
name
-
,score
-
,
rank
()
over(
order
by score)
as
rank
-
from dw_zdb.tmp_temp_inland_train
-
--row_number
-
select
id
-
,
name
-
,score
-
,row_number()
over(
order
by score)
as dense_number
-
from dw_zdb.tmp_temp_inland_train
-
--dense_number
-
select
id
-
,
name
-
,score
-
,dense_number()
over(
order
by score)
as dense_number
-
from dw_zdb.tmp_temp_inland_train
結果如下:
hive中三個排序函式rank、row_number、dense_rank日常中比較常用到,今天來說說三者的區別: