Sql Server ROW_NUMBER、RANK等排名函数小结
2021/11/15 19:10:26
本文主要是介绍Sql Server ROW_NUMBER、RANK等排名函数小结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Sql server 内有四个排名函数,分别是ROW_NUMBER()、RANK()、DENSE_RANK() 以及 NTILE() 。
1. ROW_NUMBER()函数
ROW_NUMBER() 函数对查询到的结果进行简单的排序处理,可以对查询结果编排一个序号,并且不会重复。 配合OVER()语句使用,按照指定的字段进行排序。可以用于分页查询,取指定序号范围内的数据。
举个栗子:
-- 基本用法:row_num 就是 ROW_NUMBER() 根据 ID 字段升序排序的序号 select ROW_NUMBER() OVER(order by ID asc) AS row_num, * from USER -- 简单分页:取查询结果的 1 到 10 条 select * from ( select ROW_NUMBER() OVER(order by ID asc) AS row_num, * from USER ) AS A where A.row_num between 1 and 100 order by A.row_num
2. RANK()函数
RANK()函数类似于上学时按照考试成绩排名,遇到两个人成绩相同就并列到一起。 例如,A、B考了一百分,则都并列第一名,下一个人是第三名而不是第二名,A、B就拥有相同的序号。 (如排名:1、1、3、4、5)
举个栗子:
-- 基本用法:row_num 就是 RANK() 根据 SCOORE 分数字段降序排序的排名 select RANK() OVER(order by SCOORE DESC) AS row_num, * from GRADE
3. DENSE_RANK()函数
DENSE_RANK() 函数与 RANK() 函数较为相似,区别在于 DENSE_RANK() 函数的排名是连续的。 例如,A、B考了一百分,则都并列第一名,但下一个人是接着上个序号继续编号,即排名第二名。 (如排名:1、1、2、3、4)
举个栗子:
-- 基本用法:row_num 就是 DENSE_RANK() 根据 SCOORE 分数字段降序排序的排名 select DENSE_RANK() OVER(order by SCOORE DESC) AS row_num, * from GRADE
4. NTILE()函数
NTILE() 函数则是按照指定组数,对数据进行等分分组排序。 (注:不能等分时,排序靠前的组的数据行数不能小于排序靠后的组的数据行数) 如:结果 10 条数据,指定组数为 2,则编号 1 组包含前 5 条数据,编号 2 组包含后 5 条数据。 指定组数为 4,则编号 1 组包含前 3 条数据,编号 2 组包含后面 3 条数据,编号 3 组包含后续两条数据,编号 4 组包含最后两条数据。
-- 基本用法 select NTILE(4) OVER(order by ID desc) as ntile, * from USER
这篇关于Sql Server ROW_NUMBER、RANK等排名函数小结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)