【问题标题】:In what situations would Rank and Dense Rank be useful?Rank 和 Dense Rank 在什么情况下有用?
【发布时间】:2011-07-26 13:54:39
【问题描述】:

我知道使用 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 的实际用途是什么;我只是找不到我能用这种信息做什么(密集和常规排名)

【问题讨论】:

  • marc_s :你说得对,我会删除,自从我在 2008 年完成这些功能时没有使用现成的功能,它就在我的脑海里。

标签: sql-server


【解决方案1】:

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

这里有一个很好的解释:

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

【讨论】:

    【解决方案2】:

    具体的例子是任意的,不一定有用。只要您了解他们的工作(q.v. @Kevin Burton 的链接),并且至少可以模糊地记住此功能的存在,那么如果或当出现有用的情况(如果不是关键的话)时,您将能够将它们从数据库开发人员的技巧包中拉出来。 (我用过一次,也许两次,每次都非常有用,但我不能——也不需要——在不查找的情况下回忆细节。)

    【讨论】:

    • 这适用于几乎所有 OLAP 功能,例如 CUBEROLLUPCONNECT BY 等...
    • 是的——拖出一些可笑的晦涩函数将 30 行查询和子查询转换为单个查询的 6 行,感觉很棒。
    • 是的,并且是唯一一个仍然可以破译其含义 - 或扩展它的人:)
    • 不,晦涩的函数在 BOL 中有很好的记录。现在,晦涩的代码和/或逻辑就是您的工作保障所在。 :)
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多