Postgres Сумма продаж за разные периоды

Прошу помощи в решении задачи. У меня есть две таблицы в БД на Postgres.

Первая таблица содержит Магазин, Товар и Период действия цены (с и по)

store material date_start date_end
0110 755865 01.09.2021 03.09.2021
0850 7586884 02.09.2021 04.09.2021

Вторая таблица содержит продажи кол-ва по дням, магазинам и товарам

day store material qty
01.09.2021 0110 755865 5
01.09.2021 0850 7586884 2
02.09.2021 0850 7586884 4
03.09.2021 0110 755865 8
03.09.2021 0850 7586884 1
04.09.2021 0850 7586884 4
05.09.2021 0850 7586884 3

Прошу подсказать каким образом можно зная периоды дат по снижению цены из первой таблицы, посчитать сумму проданного за этот период из второй таблицы?

На примере записи магазина 0850, снижение было в период с 02.09.2021 по 04.09.2021 Должно получится что для магазина 0850 за этот период суммарно продано 9 ЕИ товара.

Заранее спасибо.


Ответы (1 шт):

Автор решения: teran

У вас две таблицы, для их соединения следует использовать оператор join. Критерий соединения, очевидно, совпадение идентификаторов магазина, материала и попадание в интервал дат.
Далее вас интересует сумма по магазинам, для этого соответственно потребуется агрегатная функция суммирования и группировка по магазину.

как результат должно получиться что-то вроде

SELECT  t1.store
      , sum(t2.qty) AS qty
FROM t1
INNER JOIN t2 on (
      t2.store = t1.store 
      AND t2.material = t1.material
      AND  t2.day between t1.date_start and t1.date_end
    )
GROUP BY t1.store
→ Ссылка