У меня есть следующая таблица под названием Магазины:
Date | Store | Price
2018-05-02 | ABC | 0.91
2018-05-02 | DEF | 0.81
2018-05-03 | ABC | 0.92
2018-05-03 | DEF | 0.83
2018-05-05 | ABC | 0.91
2018-05-05 | DEF | 0.85
Я пытаюсь написать запрос для данного магазина, который выведет цену, цену предыдущего дня, а также разницув цене между двумя днями и ценой (в процентах).Вывод должен выглядеть следующим образом:
Date | Store | Price | PrevPrice | Change | Gain
2018-05-03 | ABC | 0.92 | 0.91 | 0.01 | 1.086956522
2018-05-05 | ABC | 0.91 | 0.92 | -0.01 | -1.098901099
2018-05-03 | DEF | 0.83 | 0.81 | 0.02 | 2.409638554
2018-05-05 | DEF | 0.85 | 0.83 | 0.02 | 2.352941176
Первая дата не должна быть в выводе, поскольку она не имеет предшествующей даты.У меня есть следующий запрос, который получает PrevPrice с использованием lag ():
select *
from (
select "Date", store, price, lag(price) over (partition by code order by "Date") as PrevPrice from Stores
) s where PrevPrice is not null;
Я не уверен, как я могу рассчитать разницу в цене между двумя днями или прирост цены.В частности, я не знаю, какие методы я могу использовать для расчета разницы в цене.Любые идеи приветствуются.