Разница между RANK и DENSE_RANK заключается в том, как они обрабатывают связи. 5
RANK присваивает ранг каждой строке в наборе результатов на основе указанного порядка. 3 Строки с одинаковыми значениями получают одинаковый ранг, при этом последующие ранги корректируются с учётом связей, что приводит к пробелам в последовательности ранжирования. 3 Например, если две строки имеют самый высокий ранг (1), то следующий назначенный ранг будет 3, оставляя пробел. 3
DENSE_RANK похож на RANK, но без пробелов в значениях ранжирования. 3 Строки с одинаковыми значениями получают одинаковый ранг, а следующему уникальному значению присваивается немедленный следующий ранг. 3 Например, если две строки имеют самый высокий ранг (1), то следующий назначенный ранг будет 2, без каких-либо пробелов. 3
Кроме того, RANK всегда увеличивает номер ранга на 1 для каждой новой строки, тогда как DENSE_RANK поддерживает непрерывное ранжирование. 5