当前位置:   article > 正文

ROW_NUMBER()、RANK()、DENSE_RANK区别_rownumber()over()和rank的区别

rownumber()over()和rank的区别

ROW_NUMBER()、RANK()、DENSE_RANK区别

ROW_NUMBER():排序,不会有重复的排序数值。对于相等的两个数字,排序序号不一致

数值排序序号
11
12
23
select
  id,
  row_number()
  over(order by id) rn
from 
  data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

DENSE_RANK():排序,可有重复值。对于相等的两个数字,排序序号一致

数值排序序号
11
11
22
select
  id,
  dense_rank()
  over(order by id) rn
from 
  data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

RANK():排序,可有重复值。对于相等的两个数字,排序序号一致,但是总数会减少

数值排序序号
11
11
23
select
  id,
  rank()
  over(order by id) rn
from 
  data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果窗口中over()无排序字段,那么结果如何?

select
  id,
  rank()
  over()
from 
  data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
数值排序序号
11
11
21

如果窗口中over()无排序字段,使用的是row_number()排序,结果如何?

select
  id,
  row_number()
  over()
from 
  data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
数值排序序号
11
22
13

这种现象的原因:

在over()窗口中,所有的数值排序都是一样的。对于rank因为允许重复,所以全为1,而row_number()不会有重复的排序序号,所以会为1,2,3,4,等,但是每次排序的结果都是不同的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/240835
推荐阅读
相关标签
  

闽ICP备14008679号