Проблем:
Искате да добавите позиция за класиране към редовете последователно, дори ако редовете имат еднакви стойности.
Пример:
Нашата база данни има таблица с име competition с данни в следните колони:id (първичен ключ), first_name , last_name и score .
| id | първо_име | фамилно_име | резултат |
| 11 | Джон | Томас | 345 |
| 14 | Мери | Джонсън | 222 |
| 16 | Лиза | Кафяв | 154 |
| 23 | Алан | Блейк | 222 |
| 32 | Крис | Тейлър | 154 |
Нека покажем всички подробности за учениците:тяхното фамилно име, собствено име и резултати, сортирани по score в низходящ ред. Не искаме да пропускаме номерата на позициите, ако някои резултати са еднакви за повече от един ученик.
Решение 1:
SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank, first_name, last_name, score FROM competition;
Обърнете внимание, че рангът варира от 1 до 3.
Дискусия:
Използвайте DENSE_RANK ако не искате да пропускате позиции в класирането след редове със същия ранг. В нашия пример, въпреки че Мери и Алън имат еднакъв ранг 2, позицията за Лиза е 3.