WEB开发网
开发学院数据库MSSQL Server SQL 2005之四种排名函数 阅读

SQL 2005之四种排名函数

 2010-10-01 10:25:30 来源:WEB开发网   
核心提示: 在 PARTITION BY 子句中指定 track 列会使得为具有相同 track 的每个行组单独计算行号,2、RANK, DENSE_RANK RANK 和 DENSE_RANK 函数非常类似于 ROW_NUMBER 函数,SQL 2005之四种排名函数(7),因为它们也按照指定的排序提供排

在 PARTITION BY 子句中指定 track 列会使得为具有相同 track 的每个行组单独计算行号。

2、RANK, DENSE_RANK

RANK 和 DENSE_RANK 函数非常类似于 ROW_NUMBER 函数,因为它们也按照指定的排序提供排序值,而且可以根据需要在行组(分段)内部提供。但是,与 ROW_NUMBER 不同的是,RANK 和 DENSE_RANK 向在排序列中具有相同值的行分配相同的排序。当 ORDER BY 列表不唯一,并且您不希望为在 ORDER BY 列表中具有相同值的行分配不同的排序时,RANK 和 DENSE_RANK 很有用。RANK 和 DENSE_RANK 的用途以及两者之间的差异可以用示例进行最好的解释。以下查询按照 score DESC 顺序计算不同演讲者的行号、排序和紧密排序值:

SELECT speaker, track, score,
ROW_NUMBER() OVER(ORDER BY score DESC) AS rownum,
RANK() OVER(ORDER BY score DESC) AS rnk,
DENSE_RANK() OVER(ORDER BY score DESC) AS drnk
FROM SpeakerStats

speaker    track      score    rownum rnk drnk
---------- ---------- ----------- ------ --- ----
Jessica    Dev           9           1     1   1
Ron        Dev           9           2      1   1
Suzanne    DB          9           3      1   1
Kathy      Sys          8           4      4   2
Michele    Sys         8            5      4   2
Mike       DB           8            6      4   2
Kevin      DB           7            7      7   3
Brian      Sys          7            8      7   3
Joe        Dev          6            9      9   4
Robert     Dev         6           10     9   4
Dan        Sys         3            11    11  5

上一页  2 3 4 5 6 7 8 9  下一页

Tags:SQL 排名 函数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接