1. 程式人生 > >hive的分析函式--rank over,Row_Number() over,dense_rank()的區別

hive的分析函式--rank over,Row_Number() over,dense_rank()的區別

hive中三個排序函式rank、row_number、dense_rank日常中比較常用到,今天來說說三者的區別:

1、rank()函式

此排序方法進行排序時,相同的排序是一樣的,而且下一個不同值是跳著排序的。

2、row_number()函式

此方法不管排名是否有相同的,都按照順序1,2,3…..n 

3、dense_rank()函式

此方法對於排名相同的名次一樣,且後面名次不跳躍

案例:

資料結構如下:

程式碼例項:


  
  1. --三種函式進行對比
  2. --rank:
  3. select id
  4. , name
  5. ,score
  6. , rank
    () over( order by score) as rank
  7. from dw_zdb.tmp_temp_inland_train
  8. --row_number
  9. select id
  10. , name
  11. ,score
  12. ,row_number() over( order by score) as dense_number
  13. from dw_zdb.tmp_temp_inland_train
  14. --dense_number
  15. select id
  16. , name
  17. ,score
  18. ,dense_number() over( order by score) as dense_number
  19. from dw_zdb.tmp_temp_inland_train

結果如下:

 

 

 

 

hive中三個排序函式rank、row_number、dense_rank日常中比較常用到,今天來說說三者的區別: