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()函数用法相关推荐

  1. SQL中row_number函数用法

    row_number函数用法 1.函数讲解 2.LeetCode实战 1.函数讲解 语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) ...

  2. Oracle Row_Number()函数用法

    Oracle Row_Number()函数用法 需求:一个诊断名称对应多个诊断编码,取出现次数最多的那一个. #succeed WITH tmp AS (SELECT t1."diagnos ...

  3. SQL Server中row_number函数用法介绍

    一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数. 行号以每个分区中第一行的行号开头. 语法实例: ...

  4. Hive中row_number()函数用法详解及示例

    目录 一.Hive 中row_number()函数介绍 二.使用示例 三.总结 四.附录 在Oracle中,我们经常会用到row_number() over(partition by clo1 ord ...

  5. ROW_NUMBER() OVER()函数用法详解

    今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg   A  , 查询表sys_equi_dict   B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...

  6. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  7. 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)...

    partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指 ...

  8. SQL中 ROW_NUMBER 函数的用法

    SQL中 ROW_NUMBER 函数的用法 ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是 ...

  9. Oracle中ROW_NUMBER() OVER()函数用法

    Oracle中ROW_NUMBER() OVER()函数用法 1. 说明:ROW_NUMBER() OVER() 函数的作用:分组排序 2. 原理: row_number() over() 函数,ov ...

最新文章

  1. ASP.NET: 简要分析Table类的使用
  2. python中%r和%s的区别
  3. python爬虫从入门到放弃(一)之初识爬虫
  4. struts2+spring3.2简单demo
  5. AIX系统相关的日常操作
  6. sicp第一章部分习题解答
  7. 用 Python 识别图片中的文字
  8. hive serde 序列化与反序列化 - 一行数据写入hive表
  9. bzoj3196 二逼平衡树——线段树套平衡树
  10. CCS软件编译时Relocation Overflow Error报错解决方法
  11. 2019竞赛公开题库c语言,干货!全国电子设计大赛你必知的C语言知识
  12. Ogre 天龙八部地形管理器
  13. 系统win8 任务栏消失不见的解决办法
  14. HTML/CSS/Javascript注册登陆界面全模版(表单验证/验证码生成/敏感词屏蔽/炫酷动画/账号信息储存)
  15. 创建响应式HTML电子邮件
  16. 弘辽科技:参加拼多多九块九活动有什么用?活动流程是怎样的?
  17. 图像超分:HAN(Single Image Super-Resolution via a Holistic Attention Network)
  18. Uni-app 实战社区交友类app开发
  19. MAC格式化U盘/移动硬盘
  20. 6款最好的免费在线二维码生成器

热门文章

  1. 关于文件上传出现的问题(文件过大)
  2. 【C语言】代码命名规范
  3. 无人驾驶之路径规划:Dijkstra , A*, D*, D* Lite算法
  4. oracle怎么增量备份,Oracle 增量备份
  5. dfp 算法matlab,MATLAB拟牛顿法之DFP与BFGS算法
  6. 《C语言杂记》解决 error c4996 ‘fopen‘ This function or variable may be unsafe
  7. 关于Googleplay的支付
  8. 从零开始IntelliJ IDEA
  9. Java时间日期显示
  10. 美国最适合科技工作者生活的十佳城市