row_number -- оконная функция, которая занумерует результаты последовательностью чисел, начиная от 1.
Формальный синтаксис:
ROW_NUMBER() OVER(
[PARTITION BY column_1, column_2,…]
[ORDER BY column_3,column_4,…]
)
Опциональная секция PARTITION BY позволяет разбить результат на секции, в рамках которых нумерация будет производиться независимо.
Опциональная секция ORDER BY влияет на порядок, в котором строки результата будут занумерованы.
Использование:
SELECT
product_id,
product_name,
group_id,
ROW_NUMBER () OVER (ORDER BY product_id)
FROM
products;
Минимальный пример:
SELECT
product_id,
product_name,
group_id,
ROW_NUMBER () OVER ()
FROM
products;
Максимальный пример:
SELECT
product_id,
product_name,
group_id,
ROW_NUMBER () OVER (
PARTITION BY group_id
ORDER BY
product_name
)
FROM
products;