oracle sql:理解rank()和dense_rank()
>
RANK()
>本文阐明了Oracle SQL中DENSE_RANK()
函数之间的关键差异,重点关注其排名行为,尤其是在处理纽带和无效值时。
密钥差异:
>
RANK()
DENSE_RANK()
> >使用
>从>表中检索n的最高工资,您可以使用与此类似的查询(尽管存在更有效的方法):emptbl
RANK()
这将其排名为“降序”和“所需等级”的行薪水。
<code class="language-sql">SELECT empname FROM (SELECT empname, RANK() OVER (ORDER BY sal DESC) as sal_rank FROM emptbl) WHERE sal_rank = n;</code>
null值处理:
零值的处理取决于子句。 如果首先订购了null,则将获得最低等级。如果订购了最后(),他们将获得最高等级。
>ORDER BY
说明性示例:ORDER BY sal NULLS FIRST
ORDER BY sal NULLS LAST
查询:
产生的结果清楚地显示了差异:
<code>DEPTNO EMPNAME SAL ------------------------------ 10 rrr 10000.00 11 nnn 20000.00 11 mmm 5000.00 12 kkk 30000.00 10 fff 40000.00 10 ddd 40000.00 10 bbb 50000.00 10 ccc 50000.00</code>
>和
>显示连续排名的零等级的处理方式有所不同。 输出表将在视觉上表示不同的排名行为。 (注意:该示例假定一个名为<code class="language-sql">SELECT empname, deptno, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) as rnk, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) as drnk_first, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS LAST) as drnk_last FROM emptbl;</code>
以上是Oracle SQL 中的 RANK() 和 DENSE_RANK() 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!