列值与密集排名 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。等等。