Выбор ответа Junior SQL для продуктовых метрик спрашивают часто обновлено
COUNT после JOIN
Вопрос
Запрос SELECT COUNT(*) FROM users u JOIN orders o ON o.user_id = u.id; должен был посчитать покупателей. Что он считает на самом деле?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Число заказов у тех, кто хоть раз покупал. JOIN даёт строку на каждую пару пользователь-заказ, поэтому COUNT() считает заказы.
Варианты ответа
- Число уникальных покупателей в базе
- Число всех зарегистрированных пользователей
- Число заказов у тех, кто хоть раз покупалправильный ответ
- Число пользователей без единого заказа
Разбор
JOIN даёт строку на каждую пару пользователь-заказ, поэтому COUNT(*) считает заказы. Для покупателей нужен COUNT(DISTINCT u.id). Пользователи без заказов при INNER JOIN вообще выпадают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.