zoukankan      html  css  js  c++  java
  • Sql Server系列:排序函数

      在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 SortedProduct
    WHERE [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 ( [ <partition_by_clause> ] < order_by_clause > )

      示例:

    SELECT NTILE(5) OVER (ORDER BY [UnitsInStock] DESC) AS [ROW_NUMBER],[ProductID],[ProductName],[UnitsInStock]
    FROM [dbo].[Product]
  • 相关阅读:
    AC自动机+全概率+记忆化DP UVA 11468 Substring
    java POI技术之导出数据优化(15万条数据1分多钟)
    验证IP端与数据库Ip端是否重复!!!
    JAVA中IP和整数相互转化(含有掩码的计算)
    Nginx搭建反向代理服务器过程详解
    session原理及实现共享
    Linux部署多个tomcat
    linux下怎么修改mysql的字符集编码
    linux yum 安装mysql
    VM虚拟机下的Linux不能上网
  • 原文地址:https://www.cnblogs.com/libingql/p/4143446.html
Copyright © 2011-2022 走看看