Конспект: основы SQL для
аналитических запросов
Краткий учебный материал
1. Назначение SQL
SQL используется для работы с реляционными базами данных: выборки, фильтрации,
группировки, соединения таблиц и изменения данных. Для аналитической работы чаще
всего применяются запросы SELECT, которые позволяют получить нужный срез
информации без изменения исходных таблиц.
2. Базовая структура SELECT
Минимальный запрос состоит из списка полей и источника данных. Условие WHERE
ограничивает строки, ORDER BY задает сортировку, LIMIT уменьшает объем результата.
Часть запроса Для чего нужна Пример
SELECT выбор столбцов SELECT id, name
FROM таблица или представление FROM customers
WHERE фильтр строк WHERE city = 'Kazan'
ORDER BY сортировка ORDER BY created_at DESC
LIMIT ограничение строк LIMIT 100
3. Фильтрация
Операторы сравнения: =, <>, >, >=, <, <=.
Логические операторы: AND, OR, NOT.
Проверка диапазона: BETWEEN.
Проверка набора значений: IN.
Поиск по шаблону: LIKE.
Проверка пустых значений: IS NULL и IS NOT NULL.
4. Группировка и агрегаты
GROUP BY объединяет строки в группы, а агрегатные функции считают показатель
внутри каждой группы. Наиболее распространенные функции: COUNT, SUM, AVG, MIN и
MAX. Условие HAVING фильтрует уже сгруппированный результат.
Задача Подход
Посчитать число заказов по клиентам GROUP BY customer_id и COUNT(*)
Найти выручку по месяцам GROUP BY месяц и SUM(amount)
Стр. 1
Оставить только активных клиентов HAVING COUNT(*) > 3
Сравнить средний чек AVG(amount) по нужным группам
5. JOIN: соединение таблиц
JOIN связывает строки разных таблиц по ключу. INNER JOIN оставляет только совпавшие
строки. LEFT JOIN сохраняет все строки из левой таблицы и добавляет данные справа,
если они найдены. Для аналитики LEFT JOIN часто удобен, когда нужно увидеть не
только совпадения, но и отсутствие связанных записей.
INNER JOIN - только пересечение таблиц.
LEFT JOIN - все строки слева плюс найденные совпадения справа.
RIGHT JOIN используется реже и обычно заменяется перестановкой таблиц.
FULL JOIN возвращает строки с обеих сторон, даже если совпадений нет.
6. Частые ошибки
1. Фильтровать правую таблицу после LEFT JOIN в WHERE и случайно превращать запрос
в INNER JOIN.
2. Группировать не по тем полям, из-за чего агрегаты считаются на неправильном
уровне детализации.
3. Использовать SELECT * в отчетах, где нужен устойчивый набор колонок.
4. Не проверять дубли после соединения таблиц один-ко-многим.
5. Сравнивать NULL обычным оператором равенства вместо IS NULL.
7. Мини-шпаргалка
Нужно Использовать
Отфильтровать строки WHERE
Посчитать показатель по группам GROUP BY + агрегат
Отфильтровать группы HAVING
Связать таблицы JOIN
Убрать дубли DISTINCT
Ограничить результат LIMIT
Стр. 2