rank() over,dense_rank() over,row_number() over函数的区别

rank() over的作用是查出指定条件后进行一个排序,但是有一个特点。使用这个函数,相同列值并列显示,如两个为4的排序,然后接下来就是排序为6,其中排名5跳过。

rank() over,dense_rank() over,row_number() over函数的区别_第1张图片

dense_rank() over的作用和rank() over一样,都是排序而且形同列的值并列显示,如排序为4的两个。但是和rank() over不同的是,接下来它还是会显示排序5的。这就是密集排序。

rank() over,dense_rank() over,row_number() over函数的区别_第2张图片

row_number() over和上面两个函数不同,它不会考虑并列问题,哪怕查询的列值相同,也不会考虑并列,直接排序下去。

rank() over,dense_rank() over,row_number() over函数的区别_第3张图片

上面的三个函数,还可以分组,以rank() over 为例:

select sal,row_number() over (partitition by deptno order by sal) as sal_rank from scott.emp;

rank() over,dense_rank() over,row_number() over函数的区别_第4张图片

其他两个同样,可以这样分组。



你可能感兴趣的:(oracle,函数,rank,row_number,dense_rank)