ROW_NUMBER
Нумерує рядки 1, 2, 3… у заданому порядку — у всьому результаті або в кожній групі.
Синтаксис
ROW_NUMBER() OVER (ORDER BY <критерій>)
ROW_NUMBER() OVER (PARTITION BY <група> ORDER BY <критерій>)
Віконна функція: не зменшує кількість рядків, а додає кожному його номер. PARTITION BY починає нумерацію заново в кожній групі — так будують «топ-N у кожній категорії».