博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Server系列:排序函数
阅读量:6976 次
发布时间:2019-06-27

本文共 1258 字,大约阅读时间需要 4 分钟。

  在SQL Server中有4个排序函数:ROW_NUMBER()、RANK()、DENSE_RANK()及NTILE()函数。

1. ROW_NUMBER()函数

  ROW_NUMBER()函数为每条记录添加递增的顺序数值序号,即使存在相同的值也递增序号。

  示例:

SELECT ROW_NUMBER() OVER (ORDER BY [CategoryID] DESC) AS ROWID, [CategoryID], [CategoryName]FROM [dbo].[Category]
WITH SortedProduct AS(    SELECT ROW_NUMBER() OVER (ORDER BY [CategoryID] DESC) AS [ROW_NUMBER], [CategoryID], [CategoryName]    FROM [dbo].[Category])SELECT * FROM SortedProductWHERE [ROW_NUMBER] BETWEEN 2 AND 5

2. RANK()函数

  返回结果集的分区内每行的排名,如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。

  示例:

SELECT RANK() OVER (ORDER BY [UnitsInStock] DESC) AS [ROW_NUMBER],[ProductID],[ProductName],[UnitsInStock]FROM [dbo].[Product]

  对于相同的[UnitsInStock],查询返回相同的排名。

3. DENSE_RANK()函数

  DENSE_RANK()函数返回结果集分区中行的排名,在排名中没有任何间断。 行的排名等于所讨论行之前的所有排名数加一。

  示例:

SELECT DENSE_RANK() OVER (ORDER BY [UnitsInStock] DESC) AS [ROW_NUMBER],[ProductID],[ProductName],[UnitsInStock]FROM [dbo].[Product]

4. NTILE()函数

  将有序分区中的行分发到指定数目的组中。 各个组有编号,编号从1开始。 对于每一个行,NTILE 将返回此行所属的组的编号。

  语法:

NTILE (integer_expression) OVER ( [ 
] < order_by_clause > )

  示例:

SELECT NTILE(5) OVER (ORDER BY [UnitsInStock] DESC) AS [ROW_NUMBER],[ProductID],[ProductName],[UnitsInStock]FROM [dbo].[Product]

转载于:https://www.cnblogs.com/libingql/p/4143446.html

你可能感兴趣的文章
tar自动打包指定文件夹中的文件到指定目录
查看>>
修改Vim配色方案
查看>>
awk (一)
查看>>
C语言:在屏幕上输出信息
查看>>
C语言存储类关键字
查看>>
万能删除代码
查看>>
基于kryo序列化方案的memcached-session-manager多memcached...
查看>>
group by 查找订单的最新状态 join
查看>>
Ext Scheduler Web资源甘特图控件
查看>>
linux下查看nginx,apache,mysql,php的编译参数
查看>>
mongodb主从设置,capped collections等常用命令集合
查看>>
菜鸟学***——菜鸟的旅程
查看>>
物理层
查看>>
tomcat配置tomcat-redis-session-manager
查看>>
XenApp_XenDesktop_7.6实战篇之八:申请及导入许可证
查看>>
oracle--查看表空间大小以及修改表空间大小
查看>>
CSS float浮动的深入研究、详解及拓展(二)
查看>>
Java Web的Maven项目中Properties文件的使用(2)
查看>>
终于申请博客了
查看>>
foj2024
查看>>