Вступить в клуб →
средняявопросA/B-тесты и проверка гипотез

Запрос для разбора A/B: конверсия по группам считается неверно

Аналитик считает конверсию в заказ по группам A/B-теста:

SELECT ab.variant,
       COUNT(o.order_id) * 1.0 / COUNT(ab.user_id) AS conversion
FROM ab_users ab
LEFT JOIN orders o ON o.user_id = ab.user_id
GROUP BY ab.variant

В таблице ab_users одна строка на пользователя, в orders — по строке на каждый заказ. Что не так с результатом?

  • После JOIN строки размножаются: пользователь с тремя заказами даёт три строки, и знаменатель считает не пользователей.
  • LEFT JOIN надо заменить на INNER JOIN, иначе пользователи без заказов вообще не попадут в расчёт конверсии.
  • GROUP BY по variant недопустим, если агрегаты берутся из присоединённой таблицы: нужна оконная функция.
  • COUNT(o.order_id) надо заменить на COUNT(*): иначе пустые строки после LEFT JOIN сломают числитель.

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела