Вы соединяете users и orders по user_id, где у пользователя может быть много заказов (one-to-many). Как посчитать число пользователей, которые сделали хотя бы один заказ, чтобы избежать duplication?

AПосчитать COUNT(*) после JOIN
BПосчитать COUNT(DISTINCT user_id) после JOIN
CПосчитать SUM(order_id) после JOIN
DПосчитать AVG(order_amount) после JOIN
Правильный ответ. В one-to-many соединении COUNT(*) считает строки заказов, поэтому для пользователей нужен distinct по user_id.

Разбор

После JOIN каждая покупка создаёт отдельную строку, поэтому пользователи с несколькими заказами появляются несколько раз — это duplication. Чтобы получить число уникальных пользователей, нужно считать уникальные user_id, например COUNT(DISTINCT user_id). Этот же принцип полезен и для других метрик, где единица анализа — пользователь.

Проверь себя · 1/3разбор после ответа
Вы хотите добавить к orders атрибут category из таблицы products(product_id, category) и не изменить количество строк заказов. Что важнее всего проверить про products, чтобы избежать duplication?
Открыть Карьерник в Telegram

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