Выигранные и проигранные сделки по месяцам
SQL, по которому посчитано
WITH bounds AS (
SELECT date_trunc('month', max(date)) AS last_month
FROM deals
)
SELECT
CAST(date_trunc('month', d.date) AS DATE) AS month,
d.status AS status,
count(*) AS deals,
round(sum(d.amount)) AS amount
FROM deals d
CROSS JOIN bounds b
WHERE d.date >= CAST(b.last_month - INTERVAL 11 MONTH AS DATE)
AND d.date < CAST(b.last_month + INTERVAL 1 MONTH AS DATE)
GROUP BY 1, 2
ORDER BY 1, 2