Вы делаете JOIN таблицы users (1 строка на user_id) с таблицей events (много строк на user_id) и считаете COUNT(users.user_id) как unique users в campaign. Получилось завышение. Какое исправление наиболее корректно?

AЗаменить JOIN на union, тогда intersection исчезнет.
BОставить COUNT(users.user_id) и разделить на среднее число events.
CСчитать COUNT(DISTINCT event_id), это и есть unique users.
DСделать deduplication на уровне user_id: использовать COUNT(DISTINCT users.user_id) или предварительно агрегировать events до set user_id.
Правильный ответ. После JOIN один user_id может повториться много раз, поэтому для unique users нужна deduplication через DISTINCT.

Разбор

Когда вы присоединяете events к users, каждая строка events размножает строку user_id. Счётчик без deduplication превращается в счётчик events, а не аудитории unique users. Правильный проверка здравого смысла — убедиться, что вы считаете размер set user_id, например через COUNT(DISTINCT user_id). Это одна из самых частых ошибок уникальных подсчётов в аналитике.

Проверь себя · 1/3разбор после ответа
Для метрики retention вы определяете set A = unique users, активные в неделю 1, и set B = unique users, активные в неделю 2. Какой set соответствует вернувшимся users?
Открыть Карьерник в Telegram

Ещё вопросы по теме «Теория множеств и дедупликация»