Как посчитать pipeline velocity в SQL

Закрепи формулу pipeline velocity в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать pipeline velocity в Telegram

Зачем pipeline velocity

Pipeline velocity — скорость, с которой revenue прокачивается через sales pipeline. Объединяет 4 фактора: число сделок, размер, win rate, длительность цикла. Если хотите вырастить revenue, можно либо: больше сделок, либо больший размер, либо выше win rate, либо короче cycle. Velocity — единая metrика, отражающая результат всех 4.

Формула

pipeline_velocity = (open_deals × avg_deal_size × win_rate) / avg_cycle_length_days

Результат — revenue per day. Если 100 деалов × $20k × 30% / 60 days = $10k per day expected revenue.

Velocity в SQL

WITH metrics AS (
    SELECT
        COUNT(*) AS open_deals,
        AVG(deal_size) AS avg_deal_size,
        SUM(CASE WHEN status = 'won' THEN 1 ELSE 0 END)::NUMERIC
        / NULLIF(SUM(CASE WHEN status IN ('won', 'lost') THEN 1 ELSE 0 END), 0) AS win_rate,
        AVG(EXTRACT(EPOCH FROM (closed_at - created_at)) / 86400)
            FILTER (WHERE status IN ('won', 'lost')) AS avg_cycle_days
    FROM deals
    WHERE created_at >= CURRENT_DATE - INTERVAL '180 days'
)
SELECT
    open_deals,
    avg_deal_size,
    win_rate,
    avg_cycle_days,
    open_deals * avg_deal_size * win_rate / NULLIF(avg_cycle_days, 0) AS pipeline_velocity_per_day
FROM metrics;

По сегментам

SELECT
    customer_segment,
    COUNT(*) FILTER (WHERE status = 'open') AS open_deals,
    AVG(deal_size) AS avg_size,
    SUM(CASE WHEN status = 'won' THEN 1 ELSE 0 END)::NUMERIC
    / NULLIF(SUM(CASE WHEN status IN ('won', 'lost') THEN 1 ELSE 0 END), 0) AS win_rate,
    AVG(EXTRACT(EPOCH FROM (closed_at - created_at)) / 86400)
        FILTER (WHERE status IN ('won', 'lost')) AS cycle_days
FROM deals
WHERE created_at >= CURRENT_DATE - INTERVAL '180 days'
GROUP BY customer_segment
HAVING COUNT(*) >= 20;

Enterprise: low velocity (long cycles), high deal size. SMB: high velocity, low deal size. Mid-market — sweet spot.

Закрепи формулу pipeline velocity в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать pipeline velocity в Telegram

Как повысить velocity

Decompose: какой фактор давит:

SELECT
    DATE_TRUNC('quarter', created_at)::DATE AS quarter,
    COUNT(*) AS deals,
    AVG(deal_size) AS avg_size,
    AVG(CASE WHEN status = 'won' THEN 1 ELSE 0 END) AS win_rate,
    AVG(EXTRACT(EPOCH FROM (closed_at - created_at)) / 86400) AS cycle_days
FROM deals
WHERE created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY DATE_TRUNC('quarter', created_at)
ORDER BY quarter;

YoY rise — какие компоненты? Если только cycle растёт — sales-team training. Если win rate падает — product issue.

Частые ошибки

Ошибка 1. Считать на open deals only. Win rate должна быть на closed deals. Open ещё не closed → нельзя.

Ошибка 2. Cycle включать stagnant deals. Deal сидит 12 months → distortion average. Cap at 90 days или log-transform.

Ошибка 3. Velocity без segments. Enterprise + SMB blended velocity — bad signal. Each independently.

Ошибка 4. Forecasting через velocity. Velocity — описательная metrika, не forecast. Просто умножение vs reality differs.

Ошибка 5. Деления на zero cycle. Если cycle 0 days (заказали и купили сразу) — деление ломается. NULLIF.

Связанные темы

FAQ

Какой velocity «хороший»?

Зависит от segment. SMB $50k/day per rep — норма. Enterprise $5-10k/day per rep.

Velocity vs ARR?

Velocity — ежедневный run rate revenue. ARR — annualized.

Можно ли increase velocity?

4 рычага: больше deals (pipeline gen), bigger size (upsell), higher win rate (sales enablement), shorter cycle (process optim).

Velocity per rep?

Yes — top reps имеют 2-3× higher velocity. Coaching opportunity.

Updated daily?

Monthly или quarterly — для trend. Daily slishком volatile.