Я пытаюсь получить все оплаченные контракты из моей таблицы контрактов и сгруппировать их по месяцам. Я могу получить данные, но за месяцы, когда нет нового платного контракта, я хочу получить ноль вместо пропущенного месяца. Я попытался coalesce и generate_series , но я не могу получить пропущенную строку.
Вот мой запрос:
with months as (
select generate_series(
'2019-01-01', current_date, interval '1 month'
) as series )
select date(months.series) as day, SUM(contracts.price) from months
left JOIN contracts on date(date_trunc('month', contracts.to)) = months.series
where contracts.tier='paid' and contracts.trial=false and (contracts.to is not NULL) group by day;
Я хочу результаты будут выглядеть так:
|Contract Value| Month|
| 20 | 01-2020|
| 10 | 02-2020|
| 0 | 03-2020|
Я могу получить строки, в которых есть контракт, но не могу получить нулевую строку.
Postgres Версия 10,9