Как посчитать Growth Rate в SQL
Содержание:
Зачем Growth Rate
Growth Rate — главная метрика стартапов. Investor смотрит: 20% MoM = $1M в декабре превратится в $9.5M за год. 5% MoM = только $1.8M. Growth Rate — нелинейный, не путать с absolute revenue.
Формула
Growth Rate = (current - previous) / previous × 100%Или:
Growth Rate (period-over-period) = (current / previous - 1) × 100%Базовый расчёт
Данные: monthly_revenue(month, revenue).
SELECT
month,
revenue,
LAG(revenue) OVER (ORDER BY month) AS prev_revenue,
(revenue::NUMERIC / NULLIF(LAG(revenue) OVER (ORDER BY month), 0) - 1) * 100 AS growth_pct
FROM monthly_revenue
ORDER BY month;Compound Growth
Кумулятивный за период:
WITH first_last AS (
SELECT
(SELECT revenue FROM monthly_revenue ORDER BY month ASC LIMIT 1) AS start_val,
(SELECT revenue FROM monthly_revenue ORDER BY month DESC LIMIT 1) AS end_val,
(SELECT COUNT(*) - 1 FROM monthly_revenue) AS periods
)
SELECT
start_val,
end_val,
periods,
POWER(end_val::NUMERIC / NULLIF(start_val, 0), 1.0 / NULLIF(periods, 0)) - 1 AS compound_growth_pct
FROM first_last;Это среднегеометрический рост (как CAGR, но period-agnostic).
Smoothing
3-month rolling growth — smoothes noisy data:
WITH smoothed AS (
SELECT
month,
revenue,
AVG(revenue) OVER (
ORDER BY month
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
) AS rolling_3m_avg
FROM monthly_revenue
)
SELECT
month,
revenue,
rolling_3m_avg,
(rolling_3m_avg / NULLIF(LAG(rolling_3m_avg) OVER (ORDER BY month), 0) - 1) * 100 AS smoothed_growth_pct
FROM smoothed
ORDER BY month;Частые ошибки
Ошибка 1. Confuse arithmetic mean of growth с compound. Mean(growth) ≠ compound growth. Используйте POWER для compound.
Ошибка 2. Period-over-period vs annualized. Monthly growth 10% ≠ 120% annual. Compound: (1.1)^12 - 1 = 213%.
Ошибка 3. Negative base. Если prev = 0 или negative — growth не определён (или infinite).
Ошибка 4. Сравнивать MoM и WoW. Разные периоды. Не сравнивайте напрямую.
Ошибка 5. Outliers единичных месяцев. Один разовый shock искажает growth. Smoothing помогает.
Связанные темы
FAQ
MoM growth 5% — норма?
Зрелый бизнес — да. Стартап pre-PMF — мало. 10-20% MoM — растущий стартап.
Growth Rate vs CAGR?
Growth Rate — между двумя periods. CAGR — annualized over multi-year.
Smoothed growth — обманывает?
Нет, показывает trend без шума. Но для real-time alerting нужен raw.
Negative growth — что делать?
Декомпозиция: что упало (acquisition, retention, AOV)? Где конкретно?
Compound vs simple growth?
Compound учитывает reinvestment. Simple = linear. Для growth — compound.