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()函數
以上是Oracle 中的 RANK() 與 DENSE_RANK():有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!