Использование оконных функций ROW_NUMBER и RANK в SQL отличается следующим образом:
- ROW_NUMBER вычисляет последовательность номеров строк внутри партиции, независимо от того, есть ли в строках повторяющиеся значения или нет. 2
- RANK вычисляет ранг каждой строки внутри партиции. 2 Если есть повторяющиеся значения, функция возвращает одинаковый ранг для таких строчек, пропуская при этом следующий числовой ранг. 2
Таким образом, ROW_NUMBER возвращает номер строки, а RANK — ранг каждой строки. 4
Ещё одна оконная функция для ранжирования — Dense_RANK — в отличие от RANK, для одинаковых значений возвращает ранг, не пропуская следующий. 4