Курс на 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. Оптимизация, тесты и дорожная карта: что дальше