Курс на Stepik
Обложка курса «SQL для дата-инженеров» на Stepik
500 ₽

SQL для дата-инженеров ★ 5.000

Открыть на
STEPIK.ORG

Практический SQL для дата-инженеров на PostgreSQL 16: от SELECT, JOIN, CTE и оконных функций до индексов, транзакций, ETL, качества данных и итогового аналитического хранилища.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «SQL для дата-инженеров»Учеников на курсе 47
Сертификаты, выданные на курсе «SQL для дата-инженеров»Сертификатов выдано 0
Отзывы о курсе «SQL для дата-инженеров»Отзывов получено 1
Рейтинг курса «SQL для дата-инженеров»Рейтинг курса 5.000
Уроки в курсе «SQL для дата-инженеров»Количество уроков 171
Тесты в курсе «SQL для дата-инженеров»Количество квизов 850
Время прохождения курса «SQL для дата-инженеров»Время прохождения курса —
Стоимость курса «SQL для дата-инженеров»Стоимость курса 500 ₽ —
Обновления курса «SQL для дата-инженеров»Обновления курса — —
Дата публикации курса «SQL для дата-инженеров»Дата публикации курса — ———
Последнее обновление курса «SQL для дата-инженеров»Последнее обновление — ———
Сложность normal — ———

Содержание курса

Разделы в курсе «SQL для дата-инженеров» 21 раздел Уроки в курсе «SQL для дата-инженеров» 171 урок Тесты в курсе «SQL для дата-инженеров» 850 тестов Время прохождения курса «SQL для дата-инженеров» 1 ч. Последнее обновление курса «SQL для дата-инженеров» обн. 16 июля 2026

Модуль 1. Введение: зачем дата-инженеру SQL и реляционная модель

7 уроков
1. О курсе: как проходить обучение и канал «Логово Дата-Инженера» ↗
2. Почему SQL — главный язык дата-инженера ↗
3. Реляционная модель: таблицы, строки, столбцы, связи ↗
4. Что такое СУБД и место PostgreSQL среди баз данных ↗
5. Установка PostgreSQL и первое подключение через psql ↗
6. Графические клиенты (pgAdmin, DBeaver) и как мы будем учиться ↗
7. Декларативность SQL: мы говорим «что», а не «как» ↗

Модуль 2. Первые запросы: SELECT

7 уроков
1. Структура запроса SELECT и порядок его частей ↗
2. Выбор столбцов, звёздочка и псевдонимы через AS ↗
3. Константы, выражения и вычисляемые столбцы ↗
4. DISTINCT: убираем повторяющиеся строки ↗
5. ORDER BY: сортировка результата ↗
6. LIMIT и OFFSET: постраничная выборка ↗
7. Комментарии, форматирование и как читать ошибки PostgreSQL ↗

Модуль 3. Фильтрация строк: WHERE

8 уроков
1. WHERE: отбор строк по условию ↗
2. Операторы сравнения и логические AND, OR, NOT ↗
3. Скобки и приоритет логических операторов ↗
4. BETWEEN, IN и проверка диапазонов и списков ↗
5. LIKE и ILIKE: шаблоны для строк ↗
6. NULL и трёхзначная логика: IS NULL, IS NOT NULL ↗
7. Частые ловушки с NULL в условиях ↗
8. Отбор по нескольким столбцам: типовые приёмы ↗

Модуль 4. Типы данных PostgreSQL

9 уроков
1. Обзор типов данных: числа, строки, даты, булевы ↗
2. Целые числа: smallint, integer, bigint и переполнение ↗
3. Дробные числа: numeric против real и double precision ↗
4. Строки: text, varchar, char — что и когда выбирать ↗
5. Булев тип boolean и его особенности ↗
6. Дата и время: date, time, timestamp, timestamptz ↗
7. Приведение типов: CAST и оператор :: ↗
8. Значение по умолчанию DEFAULT и роль NULL ↗
9. Автоинкремент: serial и GENERATED ... AS IDENTITY ↗

Модуль 5. Функции и выражения

9 уроков
1. Строковые функции: длина, регистр, обрезка пробелов ↗
2. Конкатенация и форматирование строк ↗
3. Подстроки, поиск и замена: substring, position, replace ↗
4. Числовые функции и округление ↗
5. COALESCE и NULLIF: обработка пропусков ↗
6. CASE: условные выражения внутри запроса ↗
7. Функции даты и времени: now, current_date, extract ↗
8. Арифметика дат и интервалы ↗
9. Разбор и форматирование дат: to_date, to_char, to_timestamp ↗

Модуль 6. Агрегация и группировка

9 уроков
1. Агрегатные функции: count, sum, avg, min, max ↗
2. COUNT(*) против COUNT(столбец) и поведение с NULL ↗
3. GROUP BY: группировка строк по ключу ↗
4. Группировка по нескольким столбцам ↗
5. HAVING: фильтрация по группам ↗
6. Порядок выполнения: WHERE против HAVING ↗
7. Агрегаты с DISTINCT ↗
8. Сбор значений: string_agg и array_agg ↗
9. Группировка по выражению и типичные ошибки GROUP BY ↗

Модуль 7. Соединения таблиц (JOIN)

10 уроков
1. Зачем нужны соединения и пара слов о нормализации ↗
2. INNER JOIN: пересечение таблиц по ключу ↗
3. LEFT JOIN: сохраняем все строки левой таблицы ↗
4. RIGHT и FULL OUTER JOIN ↗
5. Условие ON, USING и естественные соединения ↗
6. Соединение по нескольким столбцам ↗
7. Самосоединение таблицы с самой собой ↗
8. CROSS JOIN и декартово произведение ↗
9. Размножение строк при JOIN — главная ловушка ↗
10. Анти-join и semi-join: EXISTS, NOT EXISTS, NOT IN ↗

Модуль 8. Подзапросы и обобщённые выражения (CTE)

9 уроков
1. Скалярный подзапрос и подзапрос со списком в WHERE ↗
2. IN, ANY и ALL с подзапросами ↗
3. EXISTS и коррелированные подзапросы ↗
4. Подзапрос в FROM: производная таблица ↗
5. Подзапрос в списке SELECT ↗
6. CTE через WITH: читаемые многошаговые запросы ↗
7. Несколько CTE и их цепочки ↗
8. Рекурсивные CTE: иерархии и графы ↗
9. CTE против подзапросов: что и когда выбирать ↗

Модуль 9. Операции над множествами

6 уроков
1. UNION и UNION ALL: склейка результатов ↗
2. INTERSECT и EXCEPT: пересечение и разность ↗
3. Совместимость столбцов в операциях над множествами ↗
4. Сортировка и LIMIT поверх набора ↗
5. VALUES как источник строк ↗
6. Типовые задачи на операции над множествами ↗

Модуль 10. Оконные функции

10 уроков
1. Зачем нужны оконные функции и чем они отличаются от GROUP BY ↗
2. OVER, PARTITION BY и ORDER BY ↗
3. Нумерация строк: ROW_NUMBER, RANK, DENSE_RANK ↗
4. NTILE и деление на группы ↗
5. LAG и LEAD: доступ к соседним строкам ↗
6. FIRST_VALUE, LAST_VALUE и NTH_VALUE ↗
7. Рамка окна: ROWS и RANGE ↗
8. Накопительные итоги и скользящие средние ↗
9. Агрегаты как оконные функции ↗
10. Именованные окна через WINDOW ↗

Модуль 11. Изменение данных (DML)

8 уроков
1. INSERT: добавление строк в таблицу ↗
2. Множественная вставка и INSERT ... SELECT ↗
3. UPDATE: изменение существующих строк ↗
4. UPDATE из другой таблицы через FROM ↗
5. DELETE и TRUNCATE: чем отличаются ↗
6. RETURNING: получаем изменённые строки сразу ↗
7. UPSERT: INSERT ... ON CONFLICT DO UPDATE ↗
8. Безопасность изменений: транзакции в двух словах ↗

Модуль 12. Определение структуры (DDL)

9 уроков
1. CREATE TABLE: столбцы и их типы ↗
2. Ограничения NOT NULL и DEFAULT ↗
3. Первичный ключ PRIMARY KEY ↗
4. Внешний ключ FOREIGN KEY и ссылочная целостность ↗
5. Ограничения UNIQUE и CHECK ↗
6. ALTER TABLE: меняем структуру таблицы ↗
7. DROP, RENAME и каскадное удаление ↗
8. Временные таблицы и CREATE TABLE AS ↗
9. Представления VIEW и материализованные представления ↗

Модуль 13. Ключи, целостность и нормализация

5 уроков
1. Суррогатные и естественные ключи: что выбрать ↗
2. FOREIGN KEY подробно: ON DELETE и ON UPDATE ↗
3. Составные ключи и составной внешний ключ ↗
4. CHECK и доменная логика на уровне базы ↗
5. Нормализация на практике: 1NF, 2NF, 3NF ↗

Модуль 14. Индексы и производительность

10 уроков
1. Что такое индекс и зачем он нужен ↗
2. B-tree индекс: как он ускоряет поиск ↗
3. EXPLAIN: читаем план выполнения запроса ↗
4. EXPLAIN ANALYZE: реальные времена и строки ↗
5. Seq Scan против Index Scan ↗
6. Составные индексы и порядок столбцов в них ↗
7. Частичные и функциональные индексы ↗
8. Покрывающие индексы и INCLUDE ↗
9. Почему индекс иногда не используется ↗
10. Hash, GIN, GiST и BRIN — какой под какую задачу ↗

Модуль 15. Транзакции и параллелизм

8 уроков
1. ACID и зачем вообще нужны транзакции ↗
2. BEGIN, COMMIT и ROLLBACK ↗
3. SAVEPOINT: частичный откат ↗
4. Уровни изоляции транзакций ↗
5. Аномалии: грязное, неповторяемое чтение и фантомы ↗
6. Блокировки строк: SELECT ... FOR UPDATE и взаимоблокировки ↗
7. MVCC в PostgreSQL: как живут версии строк ↗
8. Идемпотентность операций записи ↗

Модуль 16. Продвинутые типы и работа с данными

9 уроков
1. Массивы: создание, доступ и операции ↗
2. JSON и JSONB: хранение полуструктурированных данных ↗
3. Доступ к JSONB, операторы и индексация ↗
4. Диапазонные типы и их операторы ↗
5. enum и пользовательские типы ↗
6. Тип UUID и зачем он дата-инженеру ↗
7. Таймзоны глубже: timestamptz и AT TIME ZONE ↗
8. generate_series: генерируем ряды строк ↗
9. Введение в полнотекстовый поиск: tsvector и tsquery ↗

Модуль 17. Аналитические паттерны для дата-инженера

9 уроков
1. Длинный и широкий формат данных: зачем и когда ↗
2. Pivot через CASE и агрегат FILTER ↗
3. crosstab из расширения tablefunc ↗
4. GROUPING SETS, ROLLUP и CUBE ↗
5. Дедупликация строк шаблоном ROW_NUMBER ↗
6. Поиск пропусков и серий: gaps and islands ↗
7. Когортный анализ средствами SQL ↗
8. Календарные таблицы и заполнение пропусков в рядах ↗
9. Инкрементальные витрины: считаем только новое ↗

Модуль 18. SQL в ETL и дата-платформе

8 уроков
1. Место SQL в дата-платформе: ETL против ELT ↗
2. Загрузка и выгрузка данных через COPY ↗
3. Staging-таблицы и загрузка пачками ↗
4. Идемпотентная загрузка: upsert и delete-insert ↗
5. Партиционирование больших таблиц ↗
6. Слои данных raw, cleansed, curated на SQL ↗
7. Проверки качества данных запросами и ассертами ↗
8. SQL против pandas и Spark: когда что выбирать ↗

Модуль 19. Программирование на стороне базы

8 уроков
1. Функции на SQL и на PL/pgSQL ↗
2. Параметры, переменные и возврат значения ↗
3. Управляющие конструкции: IF и циклы ↗
4. Возврат таблиц: RETURNS TABLE и SETOF ↗
5. Триггеры и их типичные применения ↗
6. Хранимые процедуры и управление транзакциями ↗
7. Обработка ошибок через EXCEPTION ↗
8. Когда логику держать в базе, а когда нет ↗

Модуль 20. Качество, доступ и эксплуатация

7 уроков
1. Проверки качества данных запросами ↗
2. Поиск аномалий, выбросов и дубликатов ↗
3. Тестирование SQL: контрольные запросы и pgTAP ↗
4. Системный каталог: information_schema и pg_catalog ↗
5. Роли и права доступа: GRANT и REVOKE ↗
6. Резервные копии и восстановление: обзор ↗
7. Чек-лист код-ревью SQL-запроса ↗

Модуль 21. Итоговый проект

6 уроков
1. Постановка задачи: витрина продаж от сырых данных к отчёту ↗
2. Проектируем схему «звезда»: факты и измерения ↗
3. DDL: создаём таблицы, ключи и ограничения ↗
4. Загрузка и очистка данных: staging переходит в curated ↗
5. Витрины и отчёты через оконные функции и агрегаты ↗
6. Оптимизация, тесты и дорожная карта: что дальше ↗