Oracle 使用分析函数排名 rank()、dense_rank()、row_number() 使用详解

【语法】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;

Oracle 使用分析函数排名 rank()、dense_rank()、row_number() 使用详解_第1张图片

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;

Oracle 使用分析函数排名 rank()、dense_rank()、row_number() 使用详解_第2张图片

 

你可能感兴趣的:(Oracle 使用分析函数排名 rank()、dense_rank()、row_number() 使用详解)