Я пытаюсь использовать ранжирование окон, чтобы получить три заказа с наибольшей прибылью на каждый product_id, используя order_id в качестве разрешения конфликтов из таблицы продаж. Код, который я написал:
with C as
(
select product_id, order_id, profit
row_number() over(partition by product_id order by profit desc, order_id) as rownum
from sales
)
select *
from C
where rownum <= 3
order by product_id, rownum;
Я получаю сообщение об ошибке:
ERROR: syntax error at or near "("
LINE 4: row_number() over
SQL state: 42601
Может ли кто-нибудь помочь с ошибкой в моем синтаксисе?