Количество покупателей по категориям за 12 месяцев
SQL, по которому посчитано
WITH bounds AS (
SELECT date_trunc('month', max(date)) AS last_month_start
FROM deals
)
SELECT
d.category,
COUNT(DISTINCT d.customer_id) AS customers
FROM deals AS d
CROSS JOIN bounds AS b
WHERE d.status = 'Выиграна'
AND d.customer_id IS NOT NULL
AND d.date >= b.last_month_start - INTERVAL '11 months'
AND d.date < b.last_month_start + INTERVAL '1 month'
GROUP BY d.category
ORDER BY customers DESC, d.category
LIMIT 30