代码杂谈-SQL中的rank&row_number函数

Posted 她说, 她是仙, 她不是神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码杂谈-SQL中的rank&row_number函数相关的知识,希望对你有一定的参考价值。

两个函数细节记不住. 写个例子备注一下.

 select 
no, name, score
, rank() over(partition by no order by score asc) rk1
, rank() over(partition by no order by score desc) rk2
, row_number() over(partition by no order by score asc) rn1
, row_number() over(partition by no order by score desc) rn2

from  values 
 (1,'a',1), (1,'a', null),
 (1, 'b',2), (1, 'b',-2), (1, 'b',1)
 t (no, name, score)
;

结果

no name score rk1 rk2 rn1 rn2
1 b 2 5 1 5 1
1 a 1 3 2 3 2
1 b 1 3 2 4 3
1 b -2 2 4 2 4
1 a N 1 5 1 5

以上是关于代码杂谈-SQL中的rank&row_number函数的主要内容,如果未能解决你的问题,请参考以下文章

大数据学习(二十三)sql中的排序函数 row_number() rank() dense_rank()

SQL Rank 条件

Rank 分区中的情况

SQL:如何在不使用 rank() 的情况下理解解决方案代码?

SQL查询如何对增量键RANK中的相同结果进行单独分组

oracle sql rank函数取排序值