Распределение клиентов по числу сделок за 12 месяцев
SQL, по которому посчитано
WITH won AS (
SELECT
customer_id,
count(DISTINCT deal_id) AS deals_cnt
FROM deals
WHERE status = 'Выиграна'
AND date >= (SELECT date_trunc('month', max(date)) - INTERVAL '11 months' FROM deals)
GROUP BY customer_id
)
SELECT
CASE
WHEN deals_cnt = 1 THEN '1 сделка'
WHEN deals_cnt = 2 THEN '2 сделки'
WHEN deals_cnt = 3 THEN '3 сделки'
ELSE '4 и больше'
END AS deals_bucket,
count(*) AS clients,
round(count(*)::DOUBLE / (SELECT count(*) FROM won), 4) AS share_of_clients
FROM won
GROUP BY 1
ORDER BY 1