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

本文深入讲解了SQL中的窗口函数row_number(), dense_rank() 和 rank() 的使用方法,并通过实例演示了如何利用这些函数进行数据排序和分组。通过创建一个简单的薪资表格,展示了不同函数在处理重复数据时的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值