У меня есть таблица, в которой хранится ежедневная цена каждого товара. Если цена не была обновлена, для этого товара в этот день нет записи.
Мне нужно написать запрос, который извлекает для каждого элемента самую последнюю цену с окном просмотра в 10 дней от текущей даты строки, в противном случае возвращается NULL
. Я думал достичь этого с помощью оператора RANGE BETWEEN INTERVAL
. Что-то вроде:
SELECT
DATE(datetime),
item_id,
LAST(price) OVER(
PARTITION BY item_id
ORDER BY datetime DESC
RANGE BETWEEN INTERVAL '10 DAYS' AND CURRENT ROW
) AS most_recent_price_within_last_10days
FROM ...
GROUP BY
date,
item_id,
price
К сожалению, этот запрос вызывает ошибку:
LINE 20: RANGE BETWEEN INTERVAL '10 DAY' PRECEDING AND CURRENT ROW
^
Я наткнулся на старое сообщение в блоге, в котором говорится, что в Postgres такая операция невозможна. Это все еще точно?