Как посчитать Upgrade Rate в SQL

Проверь себя · 1/3разбор после ответа
Какой фильтр в WHERE корректно оставит только строки, где столбец channel задан (не равен NULL)?

Зачем Upgrade Rate

Upgrade — лучший вид расширения (expansion). Пользователи платят больше, а значит, они вовлечены и продукт решает для них более крупную задачу. Высокий Upgrade Rate коррелирует с product-market fit.

Формула

Upgrade Rate = customers_upgraded / total_customers × 100%
Expansion MRR = SUM(new_plan - old_plan) для upgraded

Базовый расчёт

Данные: plan_changes(user_id, old_plan, new_plan, change_at, plan_value).

WITH base AS (
    SELECT
        user_id,
        BOOL_OR(new_plan_value > old_plan_value) AS upgraded
    FROM plan_changes
    WHERE change_at >= CURRENT_DATE - INTERVAL '90 days'
    GROUP BY user_id
)
SELECT
    COUNT(*) AS users_with_changes,
    COUNT(*) FILTER (WHERE upgraded) AS upgraded,
    COUNT(*) FILTER (WHERE upgraded)::NUMERIC * 100 / NULLIF(COUNT(*), 0) AS upgrade_rate_pct
FROM base;

Expansion MRR

SELECT
    DATE_TRUNC('month', change_at) AS month,
    COUNT(*) FILTER (WHERE new_plan_value > old_plan_value) AS upgrade_events,
    SUM(new_plan_value - old_plan_value) FILTER (WHERE new_plan_value > old_plan_value) AS expansion_mrr,
    COUNT(*) FILTER (WHERE new_plan_value < old_plan_value) AS downgrade_events,
    SUM(old_plan_value - new_plan_value) FILTER (WHERE new_plan_value < old_plan_value) AS contraction_mrr
FROM plan_changes
WHERE change_at >= '2026-01-01'
GROUP BY 1
ORDER BY 1;
Закрепи формулу upgrade rate в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать upgrade rate в Telegram

По сегментам

SELECT
    u.segment,
    COUNT(DISTINCT u.user_id) AS users,
    COUNT(DISTINCT p.user_id) FILTER (WHERE p.new_plan_value > p.old_plan_value) AS upgraded,
    COUNT(DISTINCT p.user_id) FILTER (WHERE p.new_plan_value > p.old_plan_value)::NUMERIC * 100
        / NULLIF(COUNT(DISTINCT u.user_id), 0) AS upgrade_rate_pct
FROM users u
LEFT JOIN plan_changes p ON p.user_id = u.user_id
    AND p.change_at >= CURRENT_DATE - INTERVAL '180 days'
GROUP BY u.segment
ORDER BY upgrade_rate_pct DESC;

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

Ошибка 1. Несколько апгрейдов подряд. Пользователь повышал тариф 3 раза. Считать это как одного апгрейднувшегося пользователя или как 3 события?

Ошибка 2. Апгрейд и даунгрейд у одного клиента. Пользователь повысил тариф в первом квартале и понизил во втором. Учитывать в обоих периодах или брать чистый результат (net)?

Ошибка 3. Стоимость тарифа против набора функций. Если цена тарифа не изменилась, но добавилось больше функций — по деньгам это не апгрейд, хотя вовлечённость может вырасти.

Ошибка 4. Переход с триала на платный — это не апгрейд. Переход с бесплатного плана на первый платный — это конверсия, а не апгрейд.

Ошибка 5. Изменение цен. Если компания подняла цены на тарифы, старые клиенты обычно остаются на прежних условиях (grandfathered). Такой рост выручки не считается апгрейдом.

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

FAQ

Какой Upgrade Rate считается нормой?

Для B2B-SaaS нормой считается 10-25% в год, для B2C-подписок — 5-15%. Точный ориентир зависит от того, насколько велика разница в ценности между тарифами.

Чем апгрейд отличается от кросс-селла?

Апгрейд — это переход на более высокий тариф того же продукта. Кросс-селл — это продажа отдельного, нового продукта. По деньгам оба увеличивают выручку, но считаются разными типами расширения.

Почему Upgrade Rate падает?

Обычно причин три: тарифная сетка выстроена неудачно, бесплатная версия слишком хороша и не мотивирует платить, либо нет удачного среднего тарифа, в который логично апгрейдиться.

Считать ли автоматический апгрейд по лимиту?

Это когда клиента переводят на более высокий тариф автоматически при превышении лимита. Формально это расширение (expansion), но как сигнал готовности платить оно слабее, чем осознанный апгрейд.

Чем Upgrade Rate отличается от Expansion?

Апгрейд — это только одно измерение: смена тарифа. Расширение (expansion) шире и включает всё сразу: рост числа мест, дополнительные продукты и увеличение потребления.