Проблем:
Искате да класирате записи, като пропуснете позициите в класирането след редове, които имат същия ранг.
Пример:
Нашата база данни има таблица с име championship с данни в следните колони:id (първичен ключ), user_name и score .
| id | потребителско_име | резултат |
| 111 | Джон | 12 |
| 112 | Мери | 23 |
| 115 | Лиза | 45 |
| 120 | Алан | 23 |
| 221 | Крис | 23 |
Нека покажем имената на всички потребители и техните резултати, сортирани в низходящ ред и класирани по резултат.
Решение 1:
SELECT RANK() OVER(ORDER BY score DESC) AS rank_place, user_name, score FROM championship;
Тази заявка връща следното класиране:
| rank_place | потребителско_име | резултат |
| 1 | Лиза | 45 |
| 2 | Мери | 23 |
| 2 | Алан | 23 |
| 2 | Крис | 23 |
| 5 | Джон | 12 |
Обърнете внимание, че номерът на ранга е от 1 до 5, сортиран по резултат в низходящ ред.
Дискусия:
Използвайте RANK ако искате да пропуснете позиции в класирането след редове със същия ранг. В нашия пример Мери, Алън и Крис имат еднакво класиране от 2. Следващата отговаряща на условията позиция е 5 (изчислена от 2 + 3 реда със същия ранг).