В отчёте нужно вывести всех пользователей и количество их заказов, включая тех, у кого заказов нет. Какой тип соединения между users и orders по user_id нужен?
A
INNER JOIN users и orders по user_id сохраняет лишь пользователей с заказамиB
LEFT JOIN users и orders по user_id сохраняет всех пользователей из usersC
RIGHT JOIN users и orders по user_id сохраняет лишь заказы и теряет пользователей без нихD
UNION таблиц users и orders объединяет два списка строк без сопоставления по ключуПравильный ответ.
LEFT JOIN сохраняет все строки из левой таблицы и подставляет NULL для отсутствующих совпадений справа.Разбор
INNER JOIN вернёт только пользователей, у которых нашлись заказы, и потеряет тех, у кого их нет. Для аналитических отчётов часто важно показать и пользователей без заказов, чтобы их метрика была равна нулю. Для этого берут таблицу users слева и делают LEFT JOIN к таблице orders по user_id. RIGHT JOIN решает обратную задачу, а UNION объединяет результаты двух запросов и не выполняет сопоставление строк по ключу.
Проверь себя · 1/3разбор после ответа
Без оконных функций нужно для каждого дня посчитать изменение выручки по сравнению с предыдущим днём. Таблица
daily_revenue содержит date и revenue. Как это сделать?Ещё вопросы по теме «JOIN и операции множеств»
- Нужно посчитать число пользователей, которые сделали хотя бы 1 заказ (таблицы `users(user_id)` и `orders(user_id, order_id)`). Какой запрос посчитает правильно?
- Вы соединили заказы с `order_items` и `payments` по `order_id`, а потом посчитали `SUM(paid_amount)`. Сумма оказалась завышенной. Что вероятнее всего произошло и как исправить?
- Есть две таблицы с одинаковой схемой: `events_web(user_id, event_name, created_at)` и `events_app(user_id, event_name, created_at)`. Нужно получить общий поток событий для дальнейшей агрегации. Что использовать?
- Нужно получить уникальный список идентификаторов пользователей из двух каналов: `campaign_a(user_id)` и `campaign_b(user_id)`. Как корректнее объединить списки, чтобы убрать дубликаты?
- Как переписать запрос без `RIGHT JOIN`, используя только `LEFT JOIN`? Исходный запрос: `SELECT u.user_id, o.order_id FROM users u RIGHT JOIN orders o ON u.user_id = o.user_id;`
- Все вопросы по «JOIN и операции множеств» →