В отчёте нужно вывести всех пользователей и количество их заказов, включая тех, у кого заказов нет. Какой тип соединения между users и orders по user_id нужен?

AINNER JOIN users и orders по user_id сохраняет лишь пользователей с заказами
BLEFT JOIN users и orders по user_id сохраняет всех пользователей из users
CRIGHT JOIN users и orders по user_id сохраняет лишь заказы и теряет пользователей без них
DUNION таблиц users и orders объединяет два списка строк без сопоставления по ключу
Правильный ответ. LEFT JOIN сохраняет все строки из левой таблицы и подставляет NULL для отсутствующих совпадений справа.

Разбор

INNER JOIN вернёт только пользователей, у которых нашлись заказы, и потеряет тех, у кого их нет. Для аналитических отчётов часто важно показать и пользователей без заказов, чтобы их метрика была равна нулю. Для этого берут таблицу users слева и делают LEFT JOIN к таблице orders по user_id. RIGHT JOIN решает обратную задачу, а UNION объединяет результаты двух запросов и не выполняет сопоставление строк по ключу.

Проверь себя · 1/3разбор после ответа
Без оконных функций нужно для каждого дня посчитать изменение выручки по сравнению с предыдущим днём. Таблица daily_revenue содержит date и revenue. Как это сделать?
Тренировать SQL в Telegram

Ещё вопросы по теме «JOIN и операции множеств»