Разница между функциями ROW_NUMBER() и RANK() при использовании PARTITION BY заключается в следующем:
Таким образом, ROW_NUMBER() возвращает уникальный номер для каждой строки, начиная с 1, а RANK() назначает уникальный номер для каждой строки, начиная с 1, за исключением строк с дублирующимися значениями, в этом случае назначается одинаковый ранг и в последовательности появляется пробел для каждого дублирующего ранга. 4