Основное различие между оконными функциями RANK и DENSE_RANK в PostgreSQL заключается в том, как они обрабатывают одинаковые значения. 4
RANK назначает уникальный ранг каждой отдельной строке внутри раздела, оставляя пропуски в ранжировании для одинаковых значений. 14 Например, если два элемента имеют одинаковое значение, им будет назначен один и тот же ранг, а следующий будет пропущен. 4
DENSE_RANK назначает последовательные ранги строкам, не оставляя пропусков в случае одинаковых значений. 34 Например, если два элемента имеют одинаковое значение и плотный ранг 1, следующий ранг будет 2. 3
Таким образом, RANK подходит, когда нужно пропускать ранги в случае одинаковых значений, а DENSE_RANK — когда нужны последовательные ранги независимо от одинаковых значений. 3