8 фич и принципов JOIN, которыми меня обучили на курсах

Уровень сложности - лёгкий 🪶 Читать, как конспект.

1️⃣ INNER JOIN

— это когда берем данные ТОЛЬКО из пересечения двух таблиц. Нет совпадения — нет строки. Идеально, когда нужны "чистые" данные. Очень удобно, когда хотим зафильтровать исключительно то, что нам нужно. А ещё для генерации заготовок под отчёт - например, сгенерить все месяца.

2️⃣ LEFT JOIN

— левая таблица всегда главная.

Все строки из основной таблицы сохраняем. Если в правой нет данных — просто ставим NULL. Это наш бро 💪🏻

3️⃣ RIGHT JOIN

— отпусти и забудь ❄️

Любой RIGHT JOIN легко заменяется на LEFT JOIN — просто поменяй таблицы местами. Читаемость кода повышается в разы, а количество ошибок уменьшается.

4️⃣ FULL JOIN

Берем ВСЕ строки из обеих таблиц. Есть совпадение? Отлично! Нет? Будет NULL. Мощный инструмент, когда нужно увидеть полную картину без потерь, но не забываем делать проверку на адекватность с игрушечными табличками.

5️⃣ ДЖОЙН + АГРЕГАЦИЯ

Агрегируем перед тем, как джойнить.

6️⃣ Топ полезных функций:

• GROUP BY → сводки и агрегаты • LAG → анализ изменений • RANK → рейтинг с пропусками • DENSE_RANK → рейтинг без пропусков • CASE WHEN → логика и категории • COALESCE → борьба с NULL

7️⃣ Решение классической задачи - сессии пользователей

— через само-джойн 🕒

Хочешь найти, когда у клиента началась новая сессия? Используй джойн таблицы самой на себя. Сравниваешь текущую дату с предыдущей, определяешь разрывы — и вуаля, сессии посчитаны ✨

8️⃣ ПОДЗАПРОСЫ и СТЕ

— вместо создания таблиц 🧠

Когда нужна сложная логика: • Подзапрос в WHERE • CTE (WITH) как временная витрина

И не плодим лишние таблицы в базе)


Это был курс "SQL для анализа данных" авторства Глеба Михайлова. Из плюсов - понятное объяснение и предоставление блокнотов, из минусов - лично я уже терялась на моментах применения команд в практике, мне, видимо, нужны более плавные переходы или больше тренировок.

По промокоду LEO20 говорят, что будет скидка 20% на stepik 🐆

Если есть что добавить - делитесь мыслями 🤝🏻