Получение разницы в ценах в диапазоне двух дат
Имеется таблица куда раз в сутки добавляются строки, где содержится ID продукта, его цена, название и время в которое была добавлена строка.
CREATE TABLE products (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
product_id integer NOT NULL,
title text NOT NULL,
price double precision NOT NULL,
checked_at timestamp with time zone DEFAULT now()
);
Данные в таблице products выглядят таким образом:
| id | product_id | title | price | checked_at |
|---|---|---|---|---|
| 1 | 1000 | Арбуз | 50 | 2022-07-19 10:00:00 |
| 2 | 2000 | Яблоко | 30 | 2022-07-19 10:00:00 |
| 3 | 3000 | Груша | 20 | 2022-07-19 10:00:00 |
| 4 | 1000 | Арбуз | 100 | 2022-07-20 10:00:00 |
| 5 | 2000 | Яблоко | 50 | 2022-07-20 10:00:00 |
| 6 | 3000 | Груша | 35 | 2022-07-20 10:00:00 |
| 7 | 1000 | Арбуз | 150 | 2022-07-21 10:00:00 |
| 8 | 2000 | Яблоко | 50 | 2022-07-21 10:00:00 |
| 9 | 3000 | Груша | 60 | 2022-07-21 10:00:00 |
Мне необходимо передавать диапазон дат (к примеру от 2022-07-19 до 2022-07-21) и получать разницу в ценах всех уникальных продуктов, то есть ответ должен быть такой:
| product_id | title | price_difference |
|---|---|---|
| 1000 | Арбуз | 100 |
| 2000 | Яблоко | 20 |
| 3000 | Груша | 40 |
Я разобрался только с самым началом, где мне необходимо получить ID всех уникальных товаров в таблице с помощью DISTINCT.
Дальше мне необходимо найти строки, которые ближе всего к диапазону дат.