Разница между функциями RANK и DENSE_RANK в Oracle заключается в поведении при одинаковом рейтинге нескольких значений в наборе. 12
RANK присваивает непоследовательные ранги, что приводит к разрывам между целочисленными значениями рейтинга. 1 Количество пропущенных позиций зависит от того, сколько строк имеют одинаковый рейтинг. 3 Например, если Mary и Lisa продали одинаковое количество товаров и оба получили ранг №2, то с помощью RANK следующая позиция — №4. 3
DenseRANK, в свою очередь, присваивает последовательные ранги, поэтому между целочисленными значениями рейтинга не будет пробелов в случае равенства. 1 Например, если Mary и Lisa продали одинаковое количество товаров и оба получили ранг №2, то с помощью DENSERANK следующая позиция — №3. 3
Таким образом, RANK создаёт непоследовательные ранги, а DENSE_RANK — последовательные. 12