Есть две таблицы с одинаковой схемой: events_web(user_id, event_name, created_at) и events_app(user_id, event_name, created_at). Нужно получить общий поток событий для дальнейшей агрегации. Что использовать?

AINNER JOIN по user_id между events_web и events_app
BLEFT JOIN по user_id от events_web к events_app
CFULL JOIN по user_id между events_web и events_app
DUNION ALL между двумя выборками из events_web и events_app
Правильный ответ. UNION ALL складывает строки из двух источников вертикально, а JOIN соединяет колонки горизонтально по ключу.

Разбор

Когда нужно объединить записи одинакового формата из разных источников (web и app), применяют операции над наборами: UNION или UNION ALL. JOIN используется для добавления атрибутов по ключу и не предназначен для «склейки» двух логов событий в один поток. Обычно берут UNION ALL, чтобы не терять повторяющиеся события и не тратить время на удаление дублей.

Проверь себя · 1/3разбор после ответа
Нужно получить уникальный список идентификаторов пользователей из двух каналов: campaign_a(user_id) и campaign_b(user_id). Как корректнее объединить списки, чтобы убрать дубликаты?
Тренировать SQL в Telegram

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