0


ROW_NUMBER()、RANK()、DENSE_RANK区别

ROW_NUMBER()、RANK()、DENSE_RANK区别

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

select
  id,
  row_number()over(orderby id) rn
fromdata

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

select
  id,
  dense_rank()over(orderby id) rn
fromdata

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

select
  id,
  rank()over(orderby id) rn
fromdata

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

select
  id,
  rank()over()fromdata

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

select
  id,
  row_number()over()fromdata

数值排序序号112213
这种现象的原因:

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

标签: hive sql big data

本文转载自: https://blog.csdn.net/weixin_46429290/article/details/125530809
版权归原作者 牧码文 所有, 如有侵权,请联系我们删除。

“ROW_NUMBER()、RANK()、DENSE_RANK区别”的评论:

还没有评论