rank()、dense-rank()、row-number()的区别

简介: rank()、dense-rank()、row-number()的区别

Rank()、dense_rank()、row_number()都是窗口函数,他们的主要作用是为每一行计算一个排名,常常与 order by 一起使用。

 

RANK() :返回一个数字,该数字表示在窗口内当前行的排名,排序相同时会重复,最后显示的总数不会变。

即如果有两个用户的值相同,则并列第一,那么下一个排名应该是第三名。

如:1-2-3-3-5-6

 

DENSE_RANK() :返回一个数字,该数字表示在窗口内当前行的排名,排序相同时会重复,下一个排名将被跳过,最后显示的总数会减少。

即如果有两个用户的值相同,则并列第一,那么下一个排名应该是第二名。

如:1-2-3-3-4-5

 

ROW_NUMBER() :返回一个数字,该数字表示在窗口内当前行的排名,会根据顺序计算,每行都有一个唯一的行号,从 1 开始,依次递增。如:1-2-3-4-5

 

综上所述,这三种函数的主要区别在于对于相同值的处理方式不同,rank()函数会并列排名,dense_rank()函数会跳过相同的排名,row_number()函数每行都有一个唯一的排名。

相关文章
|
6月前
|
关系型数据库 MySQL
【随手记】MySQL中ROW_NUMBER()、RANK()和DENSE_RANK()函数的用法
【随手记】MySQL中ROW_NUMBER()、RANK()和DENSE_RANK()函数的用法
196 1
|
Oracle 关系型数据库 MySQL
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
527 0
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
|
关系型数据库 MySQL
MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
本文介绍了MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
243 0
|
SQL
SQL 序号列ROW_NUMBER,RANK,DENSE_RANK、NTILE
原文:SQL 序号列ROW_NUMBER,RANK,DENSE_RANK、NTILE SQL 2005新增加相关函数 : ROW_NUMBER,RANK,DENSE_RANK、NTILE 窗口函数 ...
1293 0
|
SQL HIVE Serverless
[Hive]分析函数 RANK ROW_NUMBER CUME_DIST CUME_DIST
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/56488568 1. 常用分析函数 下表列出了一些分析函数以及描述信息: 分析函数 描述 RANK 返回数据项在分区中的排名。
1656 0
|
算法
Leetcode 313. Super Ugly Number
题目翻译成中文是『超级丑数』,啥叫丑数?丑数就是素因子只有2,3,5的数,7 14 21不是丑数,因为他们都有7这个素数。 这里的超级丑数只是对丑数的一个扩展,超级丑数的素因子不再仅限于2 3 5,而是由题目给定一个素数数组。与朴素丑数算法相比,只是将素因子变了而已,解法还是和朴素丑数一致的。
104 1