zoukankan      html  css  js  c++  java
  • 【T-SQL系列】新的排序函数

    如:ROW_NUMBER、RANK、DENSE_RANK
    三个分析函数都是按照col1分组内从1开始排序

    ROW_NUMBER() 是没有重复值的排序(即使两天记录相等也是不重复的),可以利用它来实现分页
    DENSE_RANK() 是连续排序,两个第二名仍然跟着第三名
    RANK() 是跳跃拍学,两个第二名下来就是第四名

    示例:

    DECLARE @t1 TABLE
        (
          Sequence INT ,
          Name VARCHAR(20) ,
          Score INT
        )
    
    INSERT  INTO @t1
            SELECT  1 ,
                    '' ,
                    7
            UNION ALL
            SELECT  2 ,
                    '' ,
                    8
            UNION ALL
            SELECT  3 ,
                    '' ,
                    8
            UNION ALL
            SELECT  4 ,
                    '' ,
                    8
            UNION ALL
            SELECT  5 ,
                    '' ,
                    9
            UNION ALL
            SELECT  1 ,
                    '' ,
                    10
            UNION ALL
            SELECT  2 ,
                    '' ,
                    6
            UNION ALL
            SELECT  3 ,
                    '' ,
                    10
            UNION ALL
            SELECT  4 ,
                    '' ,
                    6
            UNION ALL
            SELECT  5 ,
                    '' ,
                    8
    
    SELECT  Sequence ,
            Name ,
            Score ,
            ROW_NUMBER() OVER ( ORDER BY Sequence, Score ) AS RowNumber1 ,
            ROW_NUMBER() OVER ( ORDER BY Sequence, Score DESC ) AS RowNumber2 ,
            RANK() OVER ( ORDER BY Score ) AS Rnk ,
            DENSE_RANK() OVER ( ORDER BY Score ) AS DenseRnk ,
            NTILE(15) OVER ( ORDER BY Score ) AS Bucket
    FROM    @t1

    结果集:

  • 相关阅读:
    SDN第4次上机作业
    SDN第三次作业
    SDN第三次上机作业
    SDN第二次上机作业
    SND第二次作业
    【Beta Scrum】冲刺!4/5
    【Beta Scrum】冲刺! 3/5
    【Beta Scrum】冲刺! 2/5
    【Beta Scrum】冲刺! 1/5
    SDN第二次上机作业
  • 原文地址:https://www.cnblogs.com/Bobby0322/p/4082837.html
Copyright © 2011-2022 走看看