Вы считаете «уникальные покупатели по бренду». Данные: order_items(user_id, product_id) и products(product_id, brand). Один пользователь может купить несколько товаров одного бренда. Какой расчёт на объединённых данных соответствует цели и устойчив к дублированию строк?

ACOUNT(DISTINCT user_id) с GROUP BY brand после соединения order_items и products по product_id
BCOUNT(*) после соединения order_items и products с GROUP BY brand и фильтром по статусу заказа
CCOUNT(DISTINCT product_id) после соединения order_items и products с GROUP BY brand для уникальных товаров
DCOUNT(user_id) с GROUP BY brand после соединения order_items и products без дедупликации записей
Правильный ответ. Для «уникальных покупателей» нужно считать COUNT(DISTINCT user_id), иначе связь «один ко многим» создаст дубликаты строк.

Разбор

После JOIN одна покупка соответствует одной строке, но один пользователь может сделать много покупок в одном бренде. COUNT(*) посчитает строки, а не людей, и метрика будет расти при увеличении среднего числа позиций. COUNT(DISTINCT user_id) с группировкой по brand отвечает на бизнес-вопрос и не зависит от числа товаров в чеке. SUM или AVG от user_id бессмысленны как агрегаты по идентификатору.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Открыть Карьерник в браузере

Ещё вопросы по теме «JOIN и кардинальность»