Разница между функциями ROW_NUMBER() и RANK() в SQL заключается в следующем:
- ROW_NUMBER() присваивает уникальные возрастающие значения каждой строке, не обращая внимания на повторение значений выражения сортировки. 3 Для строк с повторяющимися значениями номера присваиваются произвольно. 4
- RANK() присваивает ранг каждой строке в наборе результатов на основе указанного порядка. 1 Строки с одинаковыми значениями получают одинаковый ранг, а последующие ранги корректируются с учётом связей, что приводит к пробелам в последовательности ранжирования. 1
Таким образом, ROW_NUMBER() не рассматривает значения строк для ранжирования и не создаёт связей или пробелов, а RANK() учитывает их и позволяет пробелам появляться. 15