Row_number()函数用法小结

 更新时间:2023年05月10日 10:50:10   作者:Zhuxxxxx  
Row_number()函数是SQL SERVER系统函数中的一种,本文主要介绍了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()用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 自动定时备份sqlserver数据库的方法

    自动定时备份sqlserver数据库的方法

    下面是我已经证实可用的自动备份的方法.需要的朋友可以参考下。
    2011-11-11
  • 收缩后对数据库的使用有影响吗?

    收缩后对数据库的使用有影响吗?

    收缩后对数据库的使用有影响吗?...
    2007-07-07
  • 设置SQL Server端口的详细步骤

    设置SQL Server端口的详细步骤

    在SQL Server中,配置端口是确保数据库服务能够正确通信的重要步骤,无论是为了提高安全性还是满足特定的网络配置需求,正确设置SQL Server的端口都是必要的,本文将详细介绍如何设置SQL Server的端口,需要的朋友可以参考下
    2024-08-08
  • SQL Server中实现错误处理

    SQL Server中实现错误处理

    这篇文章介绍了SQL Server中实现错误处理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • sqlServer 获取汉字字串的拼音声母

    sqlServer 获取汉字字串的拼音声母

    sqlServer 中 获取汉字字串的拼音声母,需要的朋友可以参考下。
    2009-11-11
  • 使用SQL Server数据库嵌套子查询的方法

    使用SQL Server数据库嵌套子查询的方法

    使用SQL Server数据库嵌套子查询的方法...
    2007-03-03
  • SQL2008 详解直接将XML存入到SQL中

    SQL2008 详解直接将XML存入到SQL中

    这篇文章主要介绍了SQL2008 详解直接将XML存入到SQL中的相关资料,需要的朋友可以参考下
    2017-01-01
  • SQLServer中的触发器基本语法与作用

    SQLServer中的触发器基本语法与作用

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。本文给大家介绍SQLServer中的触发器基本语法与作用,感兴趣的朋友一起学习吧
    2016-04-04
  • sql IDENTITY_INSERT对标识列的作用和使用

    sql IDENTITY_INSERT对标识列的作用和使用

    本文主要介绍了sql IDENTITY_INSERT对标识列的作用和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • SQL触发器实例讲解

    SQL触发器实例讲解

    为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程
    2012-04-04

最新评论