Как посчитать Rule of 40 в SQL

Проверь себя · 1/3разбор после ответа
На ревью вы видите выражение CAST(user_id AS text) в коде Postgres. Какой вариант с оператором :: записывает то же самое приведение типа?

Зачем Rule of 40

Rule of 40 — фольклорная VC-метрика для SaaS: если рост выручки + операционная маржа > 40%, бизнес здоров. Меньше — что-то не так: либо рост маленький, либо unit-экономика поломана.

Формула Rule of 40

Rule of 40 = YoY Revenue Growth (%) + EBITDA Margin (%)

Порог соответствия — 40%.

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

Данные: pnl_quarterly(quarter, revenue, ebitda).

WITH yoy AS (
    SELECT
        quarter,
        revenue,
        ebitda,
        LAG(revenue, 4) OVER (ORDER BY quarter) AS prev_year_revenue
    FROM pnl_quarterly
)
SELECT
    quarter,
    revenue,
    ebitda,
    (revenue::NUMERIC / NULLIF(prev_year_revenue, 0) - 1) * 100 AS yoy_growth_pct,
    ebitda::NUMERIC * 100 / NULLIF(revenue, 0) AS ebitda_margin_pct,
    (revenue::NUMERIC / NULLIF(prev_year_revenue, 0) - 1) * 100
        + ebitda::NUMERIC * 100 / NULLIF(revenue, 0) AS rule_of_40
FROM yoy
WHERE prev_year_revenue IS NOT NULL
ORDER BY quarter;

Интерпретация

Rule of 40 Статус
> 60 Топ-уровень.
40-60 Здоровый.
20-40 Тревожно.
< 20 Критично.

Публичные SaaS-лидеры (Snowflake, Datadog) — часто 70+.

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

По периодам

Скользящее среднее за последние 4 квартала для сглаживания:

WITH stats AS (
    SELECT
        quarter,
        revenue,
        ebitda,
        LAG(revenue, 4) OVER (ORDER BY quarter) AS prev_year_revenue
    FROM pnl_quarterly
)
SELECT
    quarter,
    AVG((revenue::NUMERIC / NULLIF(prev_year_revenue, 0) - 1) * 100) OVER (
        ORDER BY quarter ROWS BETWEEN 3 PRECEDING AND CURRENT ROW
    ) AS avg_growth_4q,
    AVG(ebitda::NUMERIC * 100 / NULLIF(revenue, 0)) OVER (
        ORDER BY quarter ROWS BETWEEN 3 PRECEDING AND CURRENT ROW
    ) AS avg_ebitda_margin_4q,
    AVG((revenue::NUMERIC / NULLIF(prev_year_revenue, 0) - 1) * 100
        + ebitda::NUMERIC * 100 / NULLIF(revenue, 0)) OVER (
        ORDER BY quarter ROWS BETWEEN 3 PRECEDING AND CURRENT ROW
    ) AS rule_of_40_4q_avg
FROM stats
WHERE prev_year_revenue IS NOT NULL
ORDER BY quarter;

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

Ошибка 1. EBITDA vs Net Income. Rule of 40 классически считают на EBITDA (не Net Income).

Ошибка 2. Годовой или квартальный расчёт. Можно считать по году: годовой рост + годовая EBITDA-маржа. Можно по кварталу: рост за скользящие 12 месяцев (TTM) + TTM-маржа.

Ошибка 3. Отрицательная маржа при высоком росте. Стартап с маржой −30% и ростом +80% даёт Rule of 40 = 50. Формально порог пройден, но отрицательная маржа сама по себе — фактор риска.

Ошибка 4. Сравнивать с не-SaaS. Rule of 40 — SaaS-метрика. В e-commerce и FMCG она не применима.

Ошибка 5. Сглаживание. Rule of 40 по одному кварталу слишком шумный. Берите скользящее среднее за 12 месяцев (TTM).

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

FAQ

Какой Rule of 40 считается отличным?

Значение 50 и выше — это топ-уровень. 40–50 считается здоровым, 20–40 — средним, а всё, что ниже 20, требует срочных изменений в бизнесе.

Rule of 40 для pre-revenue стартапа?

Не работает. Формуле нужна база по выручке за прошлый год, а у стартапа без выручки её попросту нет.

EBITDA vs Operating Margin?

Классический стандарт для Rule of 40 — EBITDA. Операционная маржа (без учёта D&A) считается жёстче и даёт более консервативные значения.

Кто использует Rule of 40?

В основном венчурные фонды, инвесторы стадии роста и аналитики публичных рынков. Внутренние продуктовые команды используют эту метрику заметно реже.

Rule of 40 падает — что делать?

Если проседает рост, сфокусируйтесь на привлечении новых клиентов. Если падает маржа — режьте расходы или пересматривайте цены. Часто это компромисс: на ранней стадии жертвуют маржой ради роста, на поздней — наоборот.