Выбор ответа Middle SQL для продуктовых метрик обновлено

Потерянный знаменатель

Вопрос

Аналитик считает конверсию в покупку как COUNT(DISTINCT o.user_id) / COUNT(DISTINCT u.id) с INNER JOIN users u JOIN orders o. Почему результат всегда 100%?

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

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

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

Коротко

Правильный ответ: INNER JOIN оставил лишь пользователей с заказами. Пользователи без заказов выпадают при INNER JOIN, поэтому все оставшиеся покупатели.

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

  1. Из-за целочисленного деления двух счётчиков
  2. COUNT(DISTINCT) не работает вместе с JOIN
  3. Нужно добавить ORDER BY перед делением
  4. INNER JOIN оставил лишь пользователей с заказамиправильный ответ

Разбор

Пользователи без заказов выпадают при INNER JOIN, поэтому все оставшиеся покупатели. Нужен LEFT JOIN от пользователей. Целочисленное деление дало бы 0 или 1, а не объяснило бы суть. COUNT(DISTINCT) работает с JOIN, ORDER BY на результат не влияет.

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

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