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