Для последовательной нумерации используйте оконную функцию ROW_NUMBER() OVER (ORDER BY ...). Чтобы результат был устойчивым, порядок должен однозначно различать строки.
Как пронумеровать строки в запросе?
Для последовательной нумерации используйте оконную функцию ROW_NUMBER() OVER (ORDER BY ...). Чтобы результат был устойчивым, порядок должен однозначно различать строки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для последовательной нумерации используйте оконную функцию ROW_NUMBER() OVER (ORDER BY ...). Чтобы результат был устойчивым, порядок должен однозначно различать строки.
SELECT
ROW_NUMBER() OVER (ORDER BY created_at, id) AS row_num,
id,
created_at
FROM users
ORDER BY created_at, id;
id служит дополнительным критерием при одинаковом времени создания. Для отдельной нумерации внутри групп добавляют PARTITION BY, например по department_id. ROW_NUMBER присваивает разные номера даже строкам с одинаковыми значениями сортировки; RANK и DENSE_RANK нужны для другой семантики ранжирования.