Доля выигранных сделок по категориям за 12 месяцев
SQL, по которому посчитано
WITH p AS ( SELECT max(date) AS last_date FROM deals ) SELECT d.category AS category, count(*) AS deals_closed, count(*) FILTER (WHERE d.status = 'Выиграна') AS deals_won, round(count(*) FILTER (WHERE d.status = 'Выиграна') * 1.0 / count(*), 3) AS conversion, round(coalesce(sum(d.amount) FILTER (WHERE d.status = 'Выиграна'), 0), 2) AS won_amount FROM deals d CROSS JOIN p WHERE d.date >= p.last_date - INTERVAL '12 months' GROUP BY d.category ORDER BY conversion DESC LIMIT 30