【语法】row_number() over( partition by col1 order by col2);
【功能】表示根据col1分组,在分组内部根据col2排序,而这个值就表示每组内部排序后的顺序编码(组内连续的 唯一的);
row_number():返回的是行信息,没有排名;
dense_rank():返回的相关等级不会跳跃;
rank():返回的返回的相关等级会跳跃;
数据准备
drop table salary;
create table salary
(
employee_name varchar2(10),
money number(17,2)
);
delete from salary;
insert into salary (employee_name, money) values ('xiaozhang', 8500);
insert into salary (employee_name, money) values ('xiaozhang', 8500);
insert into salary (employee_name, money) values ('xiaozhang', 8501);
commit;
select * from salary;
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;