阅读量:6
ROW_NUMBER
和DENSE_RANK
是窗口函数,用于对查询结果集中的行进行排名操作。它们的主要区别在于处理相同排名的行时的方式。
ROW_NUMBER
:
- 如果有多行具有相同的排序值,则
ROW_NUMBER
为每行分配一个唯一的顺序号。 - 例如,如果存在两个第一名,则
ROW_NUMBER
会为它们分配不同的排名值。
DENSE_RANK
:
- 如果有多行具有相同的排序值,则
DENSE_RANK
会为它们分配相同的排名值。 - 例如,如果存在两个第一名,则
DENSE_RANK
会为它们分配相同的排名值。
因此,当需要确保每个行都有唯一的排名值时,可以使用ROW_NUMBER
;而当希望相同排名的行具有相同的排名值时,可以使用DENSE_RANK
。