首页 > 资讯列表 > 编程/数据库 >> 数据库操作教程

Row_number()函数用法小结

数据库操作教程 2023-05-12 12:12:05 转载来源: 网络整理/侵权必删

英文:Row_ Summary of the usage of the number() function

Row_number()函数是SQL SERVER系统函数中的一种,它为结果集的分区中的每一行分配一个连续的整数。简单的说就是生成一个独表,序号以每个分区的第一行开头,下面是其基本语法:PARTITION BY子句将结果集划分为分区

Row_number()函数是SQL SERVER系统函数中的一种,它为结果集的分区中的每一行分配一个连续的整数。简单的说就是生成一个独表,序号以每个分区的第一行开头,下面是其基本语法:

  • PARTITION BY子句将结果集划分为分区。 ROW_NUMBER()函数分别应用于每个分区,并重新初始化每个分区的行号。PARTITION BY子句是可选的。如果未指定,ROW_NUMBER()函数会将整个结果集视为单个分区。
  • ORDER BY子句定义结果集的每个分区中的行的逻辑顺序。 ORDER BY子句是必需的,因为ROW_NUMBER()函数对顺序敏感。
  • OVER()是一个开窗函数,对集合进行聚合计算

举个例子,用row_number()函数对以下数据表单进行课程,分数高低及学号排序

sno为学号,cno为所学课程,score为成绩

得到以下语法和查询结果:

可以看到ID的值以cno为分区进行排序,当cno变化时ID也会自动重新开始计数,然后再将成绩以降序排列,这样每科成绩高低及其对应的学号就一目了然。

如果没有partition by则row_number()将整个结果集视为一个分区:

ID的值将一直排到最后。

当row_number()与where一起使用时,可以将row_number()封装成一个子查询,如下只看每科前两名的数据:

将整个函数方法封装命名为a,再从a里面提取需要的条件。

在这里我还要补充一下row_number()函数以外的一个rank()和dense_rank()函数,有时候如果第一名有两个以上的同学时,row_number()函数只会显示一个,而用rank()和dense_rank()则可以全部显示出来(这两个的区别是前者会跳跃排序,后者不会),如图:

到此这篇关于Row_number()函数用法小结的文章就介绍到这了,更多相关Row_number()用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

英文:Row_ Summary of the usage of the number() function

标签: Row number 函数 用法 小结


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持