Как посчитать headcount growth в SQL

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

Зачем headcount growth

Headcount growth — основная финансовая метрика стартапа: payroll = 60-80% операционных расходов. Если рост сотрудников опережает рост revenue, runway сокращается. Если меньше — компания stuck. Метрика основа planning и burn rate.

Net new hires

net_new_hires = hires - leavers (за период)
growth_rate = net_new / start_headcount

Growth rate в SQL

WITH months AS (
    SELECT generate_series(
        DATE_TRUNC('month', CURRENT_DATE - INTERVAL '24 months')::DATE,
        DATE_TRUNC('month', CURRENT_DATE)::DATE,
        INTERVAL '1 month'
    )::DATE AS month_start
),
monthly AS (
    SELECT
        m.month_start AS month,
        COUNT(*) FILTER (WHERE e.hire_date >= m.month_start
                          AND e.hire_date < m.month_start + INTERVAL '1 month') AS hires,
        COUNT(*) FILTER (WHERE e.termination_date >= m.month_start
                          AND e.termination_date < m.month_start + INTERVAL '1 month') AS leavers
    FROM months m
    LEFT JOIN employees e ON TRUE
    GROUP BY m.month_start
),
headcount_history AS (
    SELECT
        month,
        hires - leavers AS net_change,
        SUM(hires - leavers) OVER (ORDER BY month) AS cumulative_headcount
    FROM monthly
)
SELECT
    month,
    net_change,
    cumulative_headcount,
    net_change::NUMERIC * 100 / NULLIF(LAG(cumulative_headcount) OVER (ORDER BY month), 0) AS monthly_growth_pct
FROM headcount_history
ORDER BY month;

Healthy startup: 3-7% monthly headcount growth. Свыше 10% — hypergrowth. Меньше 1% — стабильное состояние.

По департаментам

SELECT
    department,
    COUNT(*) FILTER (WHERE hire_date BETWEEN '2025-01-01' AND '2025-12-31') AS hires,
    COUNT(*) FILTER (WHERE termination_date BETWEEN '2025-01-01' AND '2025-12-31') AS leavers,
    COUNT(*) FILTER (WHERE hire_date BETWEEN '2025-01-01' AND '2025-12-31') -
    COUNT(*) FILTER (WHERE termination_date BETWEEN '2025-01-01' AND '2025-12-31') AS net_new
FROM employees
GROUP BY department
ORDER BY net_new DESC;

Engineering обычно главный driver growth. Sales — second.

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

Прогноз

Линейная экстраполяция:

WITH growth AS (
    SELECT
        month,
        cumulative_headcount,
        cumulative_headcount - LAG(cumulative_headcount, 12) OVER (ORDER BY month) AS yoy_growth
    FROM headcount_history
)
SELECT
    AVG(yoy_growth) FILTER (WHERE month >= CURRENT_DATE - INTERVAL '3 months') AS recent_yoy_growth,
    (SELECT cumulative_headcount FROM growth ORDER BY month DESC LIMIT 1)
    + AVG(yoy_growth) FILTER (WHERE month >= CURRENT_DATE - INTERVAL '3 months') AS projected_next_year
FROM growth;

Если YoY growth = 100, current = 250, прогноз next year = 350.

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

Ошибка 1. Считать только hires. Без leavers получается gross hires, не net growth.

Ошибка 2. Включать contractors. Contractor не headcount. Отдельно track contingent workforce.

Ошибка 3. Игнорировать seasonal hiring. Q3-Q4 hiring обычно больше (planning под Q1). Сравнивайте YoY.

Ошибка 4. Total с founder/exec. Founder hire = special event, искажает growth.

Ошибка 5. Один growth rate. Engineering vs G&A имеют разный growth. Сегментируйте.

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

FAQ

Какой headcount growth норма?

Series A startup: 5-15% monthly. Series C: 2-5%. Public: 1-3%.

Net vs gross hires?

Net = hires − leavers. Gross = только hires. Net реальный.

Можно ли rapid growth?

Yes — но рисково. Hiring quality drops at scale. Onboarding bottleneck.

Project headcount?

Combine YoY trend + planned hires. Plus buffer на turnover.

Headcount vs revenue ratio?

Revenue per employee — индикатор efficiency. SaaS: $200k-500k revenue/employee.