oracle中(ROW_NUMBER、RANK、DENSE_RANK)三大排序函数的区别

本文介绍了Oracle数据库中的ROW_NUMBER、RANK和DENSE_RANK三大排序函数的区别。通过实例展示了在对数据进行分组排序时,这三个函数如何处理重复值,从而帮助理解它们在实际使用中的行为差异。

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

最近同学面试找工作,面试官问到了(ROW_NUMBER、RANK、DENSE_RANK)这三大排名函数的区别,他说他确实用过,但是真要说区别,还真不清楚,那么今天就简单聊聊这三大函数的区别,网上也有很多人分享过,但是感觉太复杂了,我尽量做到简单。
第一步:建表。(表结构说明:某个班级中男生女生某一科成绩汇总)。
在这里插入图片描述
第二步:验证这三者的区别。
先贴出下面这段SQL,该SQL查询目的:“对班级同学以性别分组后,按成绩的升序排序”

SELECT 
    t.sex,
    t.score ,
    ROW_NUMBER() OVER (PARTITION BY t.sex ORDER BY t.score asc) ROW_NUM,
    rank() OVER (PARTITION BY t.sex ORDER BY t.score asc) RANK,
    DENSE_RANK() OVER (PARTITION BY t.sex ORDER BY t.score asc)   DENSE_RANK
FROM 
    TEST T

在这里插入图片描述
由上图女生对应成绩抽出的数据我们不难看出
row_number():不考虑数据的重复性 相同的数据排序番号也不同。
①: 1,2,3,4,5,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值