代码改变世界

Oracle中关于dense_rank()排序及其他函数排序

2020-08-17 16:36  pigboom  阅读(403)  评论(0)    收藏  举报

Oracle中分析函数排序问题

rank() over()

跳跃排序,partition by 可选,order by 必选

select ename,eage,rank() over(partition by job order by eage) from emp;
select ename,eage,rank() over(order by eage) from emp;

dense_rank() over()

连续排序,partition by 可选,order by 必选

select ename,eage,dense_rank() over(partition by job order by eage) from emp;
select ename,eage,dense_rank() over(order by eage) from emp;

row_number() over()

排序,无重复值,partition by 可选,order by 必选

select ename,eage,row_number() over(partition by job order by eage) from emp;
select ename,eage,row_number() over(order by eage) from emp;

举个栗子

select employee_name,
       money,
       rank() over(order by money) rank,
       dense_rank() over(order by money) dense_rank,
       row_number() over(order by money) row_number
  from salary;


摘自CSDNli_tiantian