Выбор ответа Junior SQL для продуктовых метрик спрашивают часто обновлено

COUNT после JOIN

Вопрос

Запрос SELECT COUNT(*) FROM users u JOIN orders o ON o.user_id = u.id; должен был посчитать покупателей. Что он считает на самом деле?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Число заказов у тех, кто хоть раз покупал. JOIN даёт строку на каждую пару пользователь-заказ, поэтому COUNT() считает заказы.

Варианты ответа

  1. Число уникальных покупателей в базе
  2. Число всех зарегистрированных пользователей
  3. Число заказов у тех, кто хоть раз покупалправильный ответ
  4. Число пользователей без единого заказа

Разбор

JOIN даёт строку на каждую пару пользователь-заказ, поэтому COUNT(*) считает заказы. Для покупателей нужен COUNT(DISTINCT u.id). Пользователи без заказов при INNER JOIN вообще выпадают.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.