Row_number()函数是SQLSERVER系统函数中的一种,本文主要介绍了Row_number()函数用法小结,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
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_number()函数用法小结


基础教程推荐
- oracle数据库排序后如何获取第一条数据 2023-07-24
- oracle19c卸载教程的超详细教程 2023-07-23
- Java程序员从笨鸟到菜鸟(五十三) 分布式之 Redis 2023-09-11
- Mariadb数据库主从复制同步配置过程实例 2023-07-25
- Python常见库matplotlib学习笔记之画图中各个模块的含义及修改方法 2023-07-27
- redis乐观锁与悲观锁的实战 2023-07-13
- redis 数据库 2023-09-13
- Windows10系统中Oracle完全卸载正确步骤 2023-07-24
- SQL Server如何设置用户只能访问特定数据库和访问特定表或视图 2023-07-29
- Python安装第三方库的方法(pip/conda、easy_install、setup.py) 2023-07-28