Как посчитать Customer Acquisition Rate в SQL
SELECT AVG(salary) FROM employees;?Содержание:
Зачем Customer Acquisition Rate
Customer Acquisition Rate (CAR) — это метрика скорости привлечения: сколько новых клиентов бизнес получает за период. По сути это скорость роста клиентской базы, а не её эффективность или стоимость.
Здесь легко запутаться в терминах, и на собесе это проверяют в первую очередь. CAR отвечает на вопрос «как быстро мы растём», а CAC (Customer Acquisition Cost) — «сколько стоит один новый клиент». Первое — про объём, второе — про деньги. Можно иметь отличный CAR и убыточную юнит-экономику одновременно: если вы залили бюджет в рекламу, новых клиентов стало много, но каждый обошёлся дороже, чем принесёт за жизнь. Поэтому CAR почти всегда смотрят в паре с CAC и конверсией, а не изолированно.
Маркетинг-аналитику эта метрика нужна каждый день: по ней отслеживают эффект запусков, сезонность, вклад каналов и реакцию на изменения бюджета. И почти всегда её считают именно в SQL — прямо по таблице пользователей.
Формула
Базовая формула — это просто счётчик новых клиентов за интервал. Второй вариант нормирует привлечение на трафик и показывает конверсию посетителя в клиента:
Customer Acquisition Rate = число новых клиентов за период
Customer Acquisition % = новые клиенты / всего посетителей × 100%Абсолютное число (первая формула) показывает масштаб, процент (вторая) — качество трафика. На интервью полезно проговорить, что «rate» здесь употребляют в двух смыслах: как темп (клиентов в месяц) и как долю (процент конверсии). Уточните, что именно имеет в виду интервьюер, прежде чем писать запрос.
Базовый расчёт
Считаем новых клиентов по месяцам. DATE_TRUNC округляет дату регистрации до начала месяца, дальше — обычная агрегация:
SELECT
DATE_TRUNC('month', signup_date) AS month,
COUNT(*) AS new_customers -- число новых клиентов за месяц
FROM users
WHERE signup_date >= '2026-01-01'
GROUP BY 1
ORDER BY 1;Если под «клиентом» понимается не регистрация, а первая покупка, считать нужно по дате первого заказа, а не по signup_date. Это частый уточняющий вопрос: «регистрация или первая оплата?» — определение метрики задаёт бизнес, а не аналитик.
По каналам
Чтобы понять, какой канал приводит клиентов, добавляем разрез по источнику привлечения:
SELECT
DATE_TRUNC('month', signup_date) AS month,
acquisition_channel,
COUNT(*) AS new_customers
FROM users
WHERE signup_date >= '2026-01-01'
GROUP BY 1, 2
ORDER BY 1, new_customers DESC;Абсолютные числа по каналам полезны, но не отвечают на вопрос «насколько хорошо канал конвертит». Для этого нормируем новых клиентов на трафик. Считаем уникальных посетителей и новых пользователей отдельными CTE, затем делим одно на другое, защищаясь от деления на ноль через NULLIF:
WITH visitors AS (
SELECT
DATE_TRUNC('month', session_date) AS month,
COUNT(DISTINCT visitor_id) AS unique_visitors
FROM sessions
GROUP BY 1
),
new_users AS (
SELECT
DATE_TRUNC('month', signup_date) AS month,
COUNT(*) AS new_users
FROM users
GROUP BY 1
)
SELECT
v.month,
v.unique_visitors,
n.new_users,
n.new_users::NUMERIC * 100 / NULLIF(v.unique_visitors, 0) AS conversion_to_signup_pct
FROM visitors v
LEFT JOIN new_users n ON n.month = v.month
ORDER BY v.month;LEFT JOIN от посетителей гарантирует, что месяц с трафиком, но без регистраций, не выпадет из отчёта, — там будет видно нулевую конверсию, а не пустая строка.
Динамика
Абсолютный CAR без сравнения с предыдущим периодом мало что говорит. Обычно смотрят прирост месяц к месяцу (MoM). LAG берёт значение предыдущей строки, а дальше считаем процент изменения:
WITH monthly AS (
SELECT
DATE_TRUNC('month', signup_date) AS month,
COUNT(*) AS new_users
FROM users
WHERE signup_date >= '2024-01-01'
GROUP BY 1
)
SELECT
month,
new_users,
LAG(new_users) OVER (ORDER BY month) AS prev_month,
(new_users::NUMERIC / NULLIF(LAG(new_users) OVER (ORDER BY month), 0) - 1) * 100 AS mom_growth_pct
FROM monthly
ORDER BY month;Для бизнеса с сезонностью MoM обманчив: декабрь почти всегда выше ноября не из-за роста, а из-за праздников. В таких случаях считают год к году (YoY) — тот же приём, но LAG(new_users, 12), чтобы сравнивать с тем же месяцем прошлого года.
Частые ошибки
Повторные регистрации. Пользователь забыл пароль и завёл новый аккаунт на другую почту — и он посчитан как новый клиент. CAR раздувается. Дедуплицируйте по устойчивому идентификатору (номер телефона, device id), а не по email.
Боты и фрод. Без фильтрации ботов CAR завышен, особенно на органическом и реферальном трафике. На стороне продукта помогает captcha и bot detection, на стороне аналитики — отсечка подозрительных источников и всплесков.
Часовой пояс. Регистрация в 23:50 UTC попадёт в следующий день по МСК. Из-за этого границы месяцев «плывут» и дневные числа не сходятся. Зафиксируйте один часовой пояс для всей отчётности и приводите signup_date к нему явно.
Атрибуция канала. Пользователь пришёл по рекламе, ушёл, вернулся из органики и только тогда зарегистрировался — какому каналу засчитать? Ответ зависит от модели атрибуции (first-touch, last-touch, multi-touch), и её надо проговорить с интервьюером, а не выбирать молча. Без корректного UTM-трекинга разрез по каналам недостоверен.
Сравнение CAR без контекста. Маркетинг увеличил бюджет — CAR вырос. Это рост эффективности или просто больше потраченных денег? Без CAC и конверсии по такому росту нельзя судить о здоровье привлечения. Всегда смотрите CAR вместе со стоимостью клиента.
Связанные темы
- Как посчитать CAC в SQL
- Как посчитать new users в SQL
- Как посчитать ROAS в SQL
- Как посчитать конверсию в SQL
FAQ
Чем CAR отличается от CAC?
CAR — это количество новых клиентов за период, метрика скорости роста. CAC — средняя стоимость привлечения одного клиента, метрика эффективности расходов. CAR может расти при ухудшающемся CAC, поэтому обе метрики смотрят вместе.
Какой CAR считается нормальным?
Зависит от стадии компании. Для растущего стартапа ориентир — двузначный прирост месяц к месяцу (около +20% MoM), для зрелого бизнеса нормой будет +5–10% MoM. Абсолютного «хорошего» значения нет — его сравнивают с планом и с предыдущими периодами.
CAR падает — с чего начать разбор?
Сначала посмотрите разрез по каналам: падение обычно локально в одном-двух источниках, а не по всему привлечению. Дальше — декомпозиция воронки: где именно теряется трафик (показ → клик → регистрация). И проверьте изменения бюджета: часто CAR падает просто потому, что срезали спенд на рабочий канал.
Чем CAR отличается от growth rate?
CAR — абсолютная величина (сколько новых клиентов пришло). Growth rate — относительная (на сколько процентов изменилась база или метрика). Growth rate удобнее сравнивать между периодами и компаниями разного масштаба, CAR — нагляднее для оценки объёма привлечения.
Можно ли считать CAR по когортам?
Да, когортный взгляд показывает, как растёт конкретная группа клиентов — например, насколько когорта увеличилась квартал к кварталу. Такой разрез используют реже, но он полезен, когда важно отследить не общий приток, а поведение отдельных наборов пользователей во времени.
Тренируйте SQL и продуктовые метрики — откройте тренажёр с 1500+ вопросами для собесов.