关闭

Rank,Dense_rank,Row_number函数区别用法

标签: oracle分析函数
95人阅读 评论(0) 收藏 举报
分类:
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函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23196次
    • 积分:459
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:37篇
    • 译文:0篇
    • 评论:1条
    最新评论