SQL для backend-разработки на PostgreSQL. 13 тем, ≥10 упражнений в каждой, всё на реальном Postgres в браузере.
Порядок идёт от повторения к глубине. Начинаем с диагностики, чтобы не тратить время на то, что ты уже знаешь. Темы 4–8 (агрегации, JOIN вглубь, подзапросы, CTE, оконные функции) — ядро «глубины», которого тебе не хватает. Темы 11–13 (индексы/EXPLAIN, транзакции) — то, что отличает backend-инженера от «человека, пишущего SELECT».
Твой путь: Темы 01 (SELECT), 02 (NULL) и 04 (агрегация) пройдены ✅.
Сейчас — Тема 03 (Выражения и CASE): заодно закрывает вопрос «WHERE vs FILTER» из агрегации.
Дальше по плану — Тема 05 (JOIN вглубь) на беглость.
Знакомство с движком. 8 задач по нарастающей — чтобы понять твой реальный уровень.
Тема 01WHERE, DISTINCT, ORDER BY, LIMIT/OFFSET, BETWEEN, IN, LIKE/ILIKE. Логический порядок выполнения.
Тема 02IS NULL, COALESCE, NULLIF, ловушки NOT IN и агрегатов с NULL. Тема, где обычно и живёт «нет глубины».
Тема 03CASE, приведение типов (::), строки, работа с датами, арифметика. Плюс разбор WHERE vs FILTER vs CASE.
Тема 04COUNT/SUM/AVG/MIN/MAX, группировка, HAVING, COUNT(*) vs COUNT(col), FILTER.
INNER/LEFT/RIGHT/FULL/CROSS, self-join, несколько JOIN, анти-join и semi-join, ON vs WHERE.
Скалярные, IN, ANY/ALL, EXISTS/NOT EXISTS, коррелированные, подзапрос в FROM.
WITH для читаемости, цепочки CTE, рекурсивные CTE (иерархии, генерация рядов).
OVER, PARTITION BY, ROW_NUMBER/RANK/DENSE_RANK, LAG/LEAD, нарастающие итоги, frames.
UNION vs UNION ALL, пересечение и разность, требования к столбцам.
INSERT, UPDATE, DELETE, UPSERT (ON CONFLICT), RETURNING, безопасные UPDATE.
CREATE TABLE, PK/FK/UNIQUE/CHECK/NOT NULL, базовая нормализация, JSONB кратко.
Почему запрос медленный, чтение плана, когда индекс помогает, типы индексов.
BEGIN/COMMIT/ROLLBACK, ACID, уровни изоляции, блокировки, дедлоки.
Не пытайся пройти всё сразу. Один урок = одна идея + практика, 15–30 минут. Возвращайся к темам через день-два — это интервальное повторение, оно и строит долгую память. Порядок можно менять: после диагностики я подскажу, с чего тебе реально стартовать.