🔹 ROW_NUMBER vs RANK: нумерация и ранги в SQL 🔹 Как пронумеровать строки и давать равные ранги при одинаковых значениях? 🔸 ROW_NUMBER и RANK решают проблему в SQL (Structured Query Language): нужно получить порядковый номер или ранг внутри группы для пагинации, удаления дублей или выборки топ-N. Без них сложно выбрать "первую" запись по группе или корректно обработать тай-сы.
🔸 ROW_NUMBER даёт уникальный последовательный номер каждой строке; RANK присваивает одинаковый ранг при равных ORDER BY и оставляет разрывы в номерах после тай-сов.
🔸 PARTITION BY разделяет данные на группы, ORDER BY задаёт порядок внутри каждой группы. Простой пример — топ по зарплате в отделе:
SELECT dept, employee, salary, ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) AS rn, RANK() OVER (PARTITION BY dept ORDER BY salary DESC) AS rnk FROM employees;
📚 ROW_NUMBER — для уникальной нумерации (pagination, dedupe), RANK — когда нужны одинаковые позиции при ничьих.
➡️ Мы в Telegram - Сетке - ВК Буду рад вашей реакции здесь⬇️
В этом посте были ссылки, но мы их удалили по правилам Сетки