列值與密集排名 vs 排名與行數

在這裡你可以找到功能。

使用上一個示例中建立的表 wf_example,執行:

select i
  , dense_rank() over (order by i)
  , row_number() over ()
  , rank() over (order by i)
from wf_example

結果是:

 i | dense_rank | row_number | rank
---+------------+------------+------
 1 |          1 |          1 |    1
 1 |          1 |          2 |    1
 1 |          1 |          3 |    1
 2 |          2 |          4 |    4
 2 |          2 |          5 |    4
 3 |          3 |          6 |    6
 4 |          4 |          7 |    7
 5 |          5 |          8 |    8
  • DENSE_RANK 訂單 VALUES通過外觀視窗。i=1 出現,所以第一行有 dense_rank,下一個和第三行 i 值沒有變化,所以它是 dense_rank 顯示 1 - FIRST 值沒有改變。第四行 i=2,它是遇到的第二個值,所以 dense_rank 顯示 2,然後是下一行。然後它在第 6 行遇到值 i=3,所以它顯示 3.對於 i 的其餘兩個值相同。所以 dense_rank 的最後一個值是 i 的不同值的數量。

  • ROW_NUMBER 訂單 ROWS 因為它們列出。

  • 的排名不要與 dense_rank 此功能令混淆行號值。所以它開始與三個相同,但是具有下一個值 4,這意味著在第 4 行遇到了 i=2(新值)。在第 6 行遇到了相同的 i=3。等等。