row_number 与dense_rank
时间: 2023-09-13 14:08:03 浏览: 112
ROW_NUMBER(),RANK()和DENSE_RANK()之间的区别
row_number和dense_rank是在SQL中用于排序和标识行的函数。
row_number()函数用于为结果集中的每一行分配一个唯一的数字。它按照指定的排序顺序(通常是ORDER BY子句)为每一行分配一个连续的整数值。如果在ORDER BY子句中使用了PARTITION BY子句,则row_number()函数将为每个分区内的行分配唯一的数字。
示例:
SELECT col1, col2, ..., row_number() OVER (ORDER BY col1) as rn
FROM table;
dense_rank()函数也类似于row_number(),但有一些区别。dense_rank()函数为结果集中的每一行分配一个整数值,这个整数值在相同的排序条件下是连续的,不会有间隔。如果有多个行具有相同的排序值,则dense_rank()函数将为这些行分配相同的排名。
示例:
SELECT col1, col2, ..., dense_rank() OVER (ORDER BY col1) as dr
FROM table;
总结来说,row_number()函数为每一行分配唯一的连续数字,而dense_rank()函数为每一行分配一个连续的排名,相同排序值的行将具有相同的排名。
阅读全文