Получение ошибки для круглых скобок после row_number для postgresql -12 - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь использовать ранжирование окон, чтобы получить три заказа с наибольшей прибылью на каждый 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

Может ли кто-нибудь помочь с ошибкой в ​​моем синтаксисе?

1 Ответ

0 голосов
/ 08 августа 2020

(Повторяю мой комментарий, чтобы у этого поста был ответ)

В запросе отсутствует запятая после столбца прибыли. Компилятор предположил, что вы хотите отображать прибыль как «row_number», затем увидел (), который вызвал ошибку.

with C as (
select product_id, order_id, profit,       <-- Needed comma here
row_number() over(partition by product_id
order by profit desc, order_id) as rownum
from sales
...........
...