Rank,Dense_rank,Row_number函数区别用法

select  a.dept_id,a.salary,
        row_number()over (partition by  a.dept_id order by a.salary) ,
        dense_rank()over (partition by  a.dept_id order by a.salary)  ,
        rank()over(partition by  a.dept_id order by a.salary)
from  tb_wyh_user_info  a;



Rank,Dense_rank,Row_number函数为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于当碰到相同数据时的排名策略。

①ROW_NUMBER:
Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
②DENSE_RANK:
Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。
③RANK:

Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/G15738290530/article/details/52381817
文章标签: oracle 分析函数
个人分类: oracle开发
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭