在什么情况下Rank和Dense_rank会有用?

时间:2011-07-26 13:54:40

标签: sql-server

我知道使用Rank和Dense Rank函数的语法 但我无法在现实世界中找到任何用途。

例如 DENSE_RANK

ranking       userid
1               500
1               500
2               502
2               502

排名

Ranking UserID
    1   500
    1   500
    1   500
    1   500
    1   500
    1   500
    1   500
    8   502
    8   502
    8   502
    8   502
    8   502
    8   502
    8   502
    15  504

我无法理解1,1 2,2值如何在现实世界中有用。 另一方面,我非常清楚地了解row_number over partition的真实用途是什么;我只是找不到我能用这种信息做什么(密集和常规等级)

2 个答案:

答案 0 :(得分:4)

您可以使用它来查找每个组的前n行

这里有一个非常好的解释:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2920665938600

答案 1 :(得分:3)

具体的例子是任意的,不一定有用。只要你明白他们做了什么(qv @Kevin Burton的链接),并且至少可以清楚地记得这个功能存在,那么如果情况出现,他们将会有用 - 如果不是关键 - 你将能够将它们从数据库开发人员的技巧中拉出来。 (我曾经使用过RANK一次,也许是两次,每次都非常有用,但我不能 - 也不需要 - 在没有查找的情况下回忆细节。)