数据库分析函数 ROW_NUMBER() rank() dense_rank() 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库分析函数 ROW_NUMBER() rank() dense_rank() 的区别相关的知识,希望对你有一定的参考价值。

直接上图

select * from tab

技术分享图片

select B,ROW_NUMBER()over(order by B) from tab

当碰到相同数据时,排名按照记录集中记录的顺序依次递增。  遇到相同数据 不影响排序 序列号

技术分享图片

select B,rank()over(order by B) from tab

当碰到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。

 遇到相同数据 影响排序   值相同 排序序号也相同,下一条数据 指在整张表的排名

 技术分享图片

select B,dense_rank()over(order by B) from tab

当碰到相同数据时,此时所有相同数据的排名都是一样的。 

  值相同 排序序号也相同,下一条数据 跟着排名排

技术分享图片

 

以上是关于数据库分析函数 ROW_NUMBER() rank() dense_rank() 的区别的主要内容,如果未能解决你的问题,请参考以下文章

数据库分析函数 ROW_NUMBER() rank() dense_rank() 的区别

Oracle 分析函数 ROW_NUMBER() 使用

[转]oracle分析函数Rank, Dense_rank, row_number

oracle 分析函数2

ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法

Spark2 DataFrame数据框常用操作之分析函数--排名函数row_number,rank,dense_rank,percent_rank