oracle rack()和dense_rank():详细的比较
> Oracle的RANK()
和DENSE_RANK()
函数两个基于指定的标准将等级分配给行,但其排名方法有很大差异。本文阐明了这些差异并说明了它们的实际应用。
函数:跳过的排名RANK()
>
函数分配层次排名。 具有相同值的行获得相同的等级,但随后的等级被跳过。 例如,如果三行共享最高值,则它们都将排名1,下一个排名将为4(跳过2和3)。
RANK()
函数:连续排名
DENSE_RANK()
>即使存在纽带,也提供连续的等级。使用相同的示例,最高值的三行分别为1、2和3,维持连续的等级序列。。
说明性示例:查找n最高工资DENSE_RANK()
考虑员工表()以找到第三高的薪水。 这两个功能都可以使用,但结果可能会有所不同:
此SQL利用emptbl
>和
<code class="language-sql">SELECT empname, sal FROM emptbl ORDER BY sal DESC OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY;</code>>和
之间的选择取决于您是否要在薪资领带的情况下跳过排名。OFFSET
RANK()
DENSE_RANK()
值的处理取决于
>语句中的>或NULL
子句。 NULLS FIRST
NULLS LAST
ORDER BY
non- NULLS FIRST
之前的值,NULL
>的vice-vices-vice-vices-vice-vice-vice-vice。
NULL
NULLS LAST
选择正确的函数
>使用,即使有领带也需要不同的等级。 当需要连续等级时,无论绑扎值如何,
>都是可取的。 选择完全取决于特定的分析要求。RANK()
>进一步学习DENSE_RANK()
要更全面地理解,请咨询官方的Oracle文档:
oracle rack()函数
以上是rack()与oracle中的dense_rank():有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!