阅读量:6
rank()和row_number()都是用来生成行号的窗口函数,但两者有一些区别:
-
rank()函数会给相同数值的行分配相同的排名,然后跳过下一个排名值。例如,如果有两行具有相同的值,则这两行将被分配相同的排名,并且下一个排名将被跳过。因此,可能会出现排名的间隔。而row_number()函数会给每一行一个唯一的行号,不会跳过任何行。
-
当使用rank()函数时,如果有多行具有相同的值,则这些行的排名之和将会被计算并除以行数。例如,如果有两行具有相同的值,它们的排名分别为2和3,则它们的排名之和为5,除以2得到2.5。而row_number()函数不会考虑相同值的情况,每一行都会有一个唯一的行号。
因此,如果需要考虑相同值的情况并希望在排名之和中得到平均排名,可以使用rank()函数。如果需要为每一行分配一个唯一的行号,可以使用row_number()函数。
以上就是关于“SQL rank()和row_number()的区别”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm