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