Как посчитать Add to Cart Rate в SQL
CASE WHEN status = 'paid' THEN amount ELSE 0 END. Что вернётся, если status равно NULL, а amount равно 500?Содержание:
Зачем Add to Cart Rate
В e-com-воронке шаги такие: просмотр товара → добавление в корзину → оформление → покупка. Add to Cart Rate показывает, насколько хорошо карточка товара превращает просмотр в желание купить. Если ACR падает, проблема в карточке товара — фото, описание, цена или отзывы.
Формула
Add to Cart Rate = adds_to_cart / product_views × 100%Базовый расчёт
SELECT
COUNT(*) FILTER (WHERE event_type = 'product_view') AS views,
COUNT(*) FILTER (WHERE event_type = 'add_to_cart') AS adds,
COUNT(*) FILTER (WHERE event_type = 'add_to_cart')::NUMERIC * 100
/ NULLIF(COUNT(*) FILTER (WHERE event_type = 'product_view'), 0) AS acr_pct
FROM events
WHERE event_date >= CURRENT_DATE - INTERVAL '30 days';По продуктам
SELECT
product_id,
COUNT(*) FILTER (WHERE event_type = 'product_view') AS views,
COUNT(*) FILTER (WHERE event_type = 'add_to_cart') AS adds,
COUNT(*) FILTER (WHERE event_type = 'add_to_cart')::NUMERIC * 100
/ NULLIF(COUNT(*) FILTER (WHERE event_type = 'product_view'), 0) AS acr_pct
FROM events
WHERE event_date >= CURRENT_DATE - INTERVAL '30 days'
AND product_id IS NOT NULL
GROUP BY product_id
HAVING COUNT(*) FILTER (WHERE event_type = 'product_view') >= 100
ORDER BY acr_pct DESC
LIMIT 50;HAVING views >= 100 отсекает товары с микро-трафиком.
По каналам
SELECT
u.acquisition_channel,
COUNT(*) FILTER (WHERE e.event_type = 'product_view') AS views,
COUNT(*) FILTER (WHERE e.event_type = 'add_to_cart') AS adds,
COUNT(*) FILTER (WHERE e.event_type = 'add_to_cart')::NUMERIC * 100
/ NULLIF(COUNT(*) FILTER (WHERE e.event_type = 'product_view'), 0) AS acr_pct
FROM events e
JOIN users u ON u.user_id = e.user_id
WHERE e.event_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY u.acquisition_channel
ORDER BY acr_pct DESC;Пользователи из органического поиска обычно имеют ACR выше, чем из платного трафика — у них более прицельное намерение купить.
Частые ошибки
Ошибка 1. Уникальные просмотры против всех просмотров. Пользователь посмотрел товар 3 раза, добавил 1 раз — ACR = 100% (по пользователям) или 33% (по просмотрам)?
Ошибка 2. Игнорировать повторные добавления. Пользователь добавил → удалил → добавил снова. Это 2 события добавления, но один пользователь.
Ошибка 3. Не учитывать быстрые добавления. Добавление без просмотра карточки (через виджет рекомендаций). Где здесь «просмотр»?
Ошибка 4. Время между просмотром и добавлением. Пользователь посмотрел 1 января, добавил 15 апреля — это связанные события? По стандартной логике — да, но только если они в одной сессии или в пределах 24 часов.
Связанные темы
- Как посчитать cart abandonment в SQL
- Как посчитать funnel в SQL
- Как посчитать конверсию в SQL
- Как посчитать bounce rate в SQL
FAQ
Какой ACR считается хорошим?
В среднем по e-com показатель держится на 5-15%. В премиум-сегменте он ниже — 2-5%, в fast fashion выше — 15-25%. Точный ориентир сильно зависит от категории товара.
ACR падает — что делать?
Сначала проверьте, не менялись ли описание и фото товара. Затем протестируйте цену через A/B-тест. И сопоставьте динамику с отзывами и рейтингами — падение оценок часто тянет ACR вниз.
Считать ACR по каждому товару?
Да, это помогает находить проблемные товары. Если у популярного товара ACR всего 1%, значит, что-то не так с его карточкой.
ACR или CVR?
ACR измеряет шаг просмотр → добавление в корзину, а CVR — добавление → покупку. Их удобно смотреть вместе, чтобы понять, на каком именно шаге воронки теряются пользователи.
ACR на мобильных и десктопе?
На мобильных ACR обычно ниже — там сложнее попадать по элементам и легче промахнуться по кнопке. Стоит раскладывать метрику по типу устройства, иначе средняя цифра скрывает эту разницу.