Как работает SQL JOIN: основные типы и примеры
Как работает SQL JOIN: основные типы и примеры
SQL — основной язык работы с базами данных. В аналитике он нужен, чтобы связывать таблицы, для этого используют операции JOIN. Рассказываем о них подробнее.
В бизнесе редко бывает, что вся информация всех отделов хранится в одной таблице. Зачастую это разные документы. SQL Join — это способ, благодаря которому можно соединить данные из разных таблиц в одну выборку. Можно сказать, что JOIN — это мост между таблицами.
Например, таблица customers хранит информацию о клиентах: имя, город, дата регистрации. А таблица orders хранит данные о заказах: сумма, дата, клиент, который сделал заказ. По отдельности эти таблицы полезны, но аналитик не сможет узнать, какой клиент сделал какой заказ, пока не объединит их. Именно здесь и помогает инструмент JOIN.
Для аналитиков, которые хотят развиваться в профессии, SQL — обязательный навык. Освоить его можно за три месяца на курсе «SQL для работы с данными и аналитики». За время обучения студенты создают проекты на основе реальных данных и практикуются в специальном тренажёре.
В базах данные нормализованы — то есть преобразованы так, чтобы они занимали меньше места, а поиск по элементам был быстрым и результативным. Данные разнесены по сущностям: например, покупатели, доставки, продукция, отделы, кампании. JOIN позволяет:
Без JOIN SQL аналитик был бы ограничен только одной таблицей. А бизнес устроен так, что данные всегда распределены между несколькими таблицами.
Существует несколько основных видов соединения. Рассмотрим их подробнее.
Главные типы соединений JOIN SQL
Помимо основных JOIN в SQL существуют и другие способы соединять данные.
CROSS и SELF — ещё два метода соединения в JOIN SQL
Рассмотрим, как работает SQL Join, на примере данных о клиентах и заказах. Есть две таблицы:
customers
orders
Используем INNER JOIN. Бизнес-логика: посчитать выручку по клиентам, но учитывать только тех, у кого есть заказы.
INNER JOIN покажет только те строки, которые присутствуют в обеих таблицах
Вот что получится. Клиентов без заказов (Мария) нет в результате:
Пример с LEFT JOIN с использованием тех же данных. Бизнес-логика: из отчёта CRM показать всех покупателей и суммы их покупок, если заказов нет — будет NULL.
LEFT JOIN возьмёт все строки из одной таблицы, а из другой подтянет только совпадающие
Вот что получится:
Пример с RIGHT JOIN. Здесь рассмотрим другую бизнес-логику: сверка маркетинга, запланированные кампании и фактические отклики. Хотим увидеть:
Для анализа есть две таблицы:
campaigns (план)
responses (факт)
Агрегируем отклики по кампании и «склеим» с планом FULL JOIN:
Отклики и план по кампаниям можно соединить с помощью FULL JOIN
Результат
Смысл:
SELF JOIN рассмотрим на примере данных о руководителях и подчинённых.
Такие таблицы встречаются в реальной работе. Тут Анна (CEO) — руководитель верхнего звена. Ей подчиняются Борис и Света. Подчинённые Бориса — Дима и Ева, а подчинённый Светы — Фёдор.
Применим такой код:
Таблица при SELF JOIN соединяется сама с собой
Результат:
Рассмотрим ошибки с SQL JOIN подробно и с примерами. Так будет понятно, что может пойти не так и как этого избежать.
Частая ошибка — не писать условие соединения (ON)
Так связываются не клиент и его заказы, а просто совпадения по одинаковым числам. Нужно соединять всегда по ключам, которые отражают логику данных:
Совет эксперта
Читать также: