SQL: Запросы к реальности
- Команды
- Практика
- #1 Практика: Аудит "пустого" трафика (WHERE =)
- #Практика: Фильтрация чисел (WHERE >)
- #Практика: Текстовые фильтры (WHERE =)
- Базовые правила SELECT для аналитика
- Словарь
Команды
#Выбор конкретных колонок
Суть
Экономия ресурсов и нервов. Выбираем только те поля, которые нужны для ответа на бизнес-вопрос, игнорируя технический мусор.
SQL-синтаксис
SELECT source_raw, visits_raw, revenue_raw
FROM analytics_events
LIMIT 10
Когда применяется
- Подготовка отчета: Когда нужно выгрузить только «Дату», «Источник» и «Доход» для вставки в Excel.
- Быстрый аудит: Проверить, заполняется ли вообще поле revenue_raw (или там везде нули/NULL), не отвлекаясь на другие 50 колонок.
Типичная ошибка
«Висячая запятая».
SELECT source_raw, visits_raw, FROM ... — это ошибка. Перед FROM запятой быть не должно. Запятая только разделяет элементы списка.
#SELECT и LIMIT
Суть
Самый базовый запрос. Позволяет заглянуть внутрь таблицы и понять, какие там лежат данные, не выгружая миллионы строк.
SQL-синтаксис
SELECT *
FROM analytics_events
LIMIT 5
Когда применяется
- Разведка: Только что подключились к новой базе и нужно понять, как называются колонки (id, date, source или revenue).
- Проверка: Загрузили CSV-файл и хотите убедиться, что данные не «поехали» (кодировка на месте, цифры в своих ячейках).
Типичная ошибка
Путаница в порядке команд. Запомни как мантру:
SELECT (Что?)
FROM (Откуда?)
LIMIT (Сколько?) —- всегда в конце.
#Фильтрация (WHERE)
Суть
Фейс-контроль для данных. Позволяет работать не со всей "помойкой", а только с нужными сегментами.
SQL-синтаксис
SELECT date_raw, source_raw, visits_raw
FROM analytics_events
WHERE visits_raw > 10
LIMIT 5
Когда применяется
- Поиск качественного трафика: Отсечь случайные заходы (WHERE visits_raw > 5).
- Анализ конкретного канала: Посмотреть статистику только по VK (WHERE source_raw = 'Переходы из социальных сетей').
- Поиск аномалий: Найти дни с аномально высоким отказом (WHERE bounce_rate_raw = '100,00%').
Типичная ошибка
Опечатки в названиях колонок (как у тебя с visits_rew). SQL не прощает ошибок даже в одной букве. Если запрос упал — первым делом проверяй написание полей.
Практика
#1 Практика: Аудит "пустого" трафика (WHERE =)
Задача
Менеджер заметил странный трафик 5 января 2026 года: переходы были, а продаж нет. Нужно подтвердить это цифрами из базы.
Требование: Вывести источник, дату, визиты и продажи. Отфильтровать строго за '05.01.2026'.
Рабочее решение (SQL)
SELECT source_raw, date_raw, visits_raw, goal_sales_raw
FROM analytics_events
WHERE date_raw = '05.01.2026'
LIMIT 5
Разбор логики
- SELECT ... — перечисляем поля. Важно: обязательно включили goal_sales_raw. Если мы хотим доказать отсутствие продаж, колонка с продажами должна быть в отчете, иначе цифры не видно.
- WHERE date_raw = '...' — жесткий фильтр. Используем кавычки, так как дата в базе хранится текстом. Оператор = оставляет только точное совпадение.
- LIMIT 5 — бережем ресурсы базы, выводим только примеры строк.
Грабли (Типичная ошибка)
Потеря колонок в выборке.
Часто новички пишут фильтр в WHERE, но забывают добавить саму метрику (например, продажи) в SELECT. Получается отчет, который фильтрует правильно, но не показывает ответ на вопрос «А сколько было денег?».
#Практика: Фильтрация чисел (WHERE >)
Задача
Найти источники трафика с высокой доходностью (выручка более 50 000 руб.).
Рабочее решение (SQL)
SELECT source_raw, users_raw, revenue_raw
FROM analytics_events
WHERE revenue_raw > 50000
LIMIT 3
Главные выводы (Запомнить!)
- Числа пишутся голыми: Никаких кавычек, никаких пробелов (50 000 — нельзя, 50000 — можно).
- Операторы сравнения: Для поиска "больше" используем >, для поиска "ровно" — =.
- Порядок: Условие WHERE всегда идет после FROM, но до LIMIT.
Типичная ошибка
Попытка написать число с пробелом или валютой (50 000 руб.). SQL — это калькулятор, он понимает только чистые цифры.
#Практика: Текстовые фильтры (WHERE =)
Задача
Выявить записи с аномальным показателем отказов (100%), чтобы понять, в какие дни и из каких источников шел некачественный трафик.
Рабочее решение (SQL)
SELECT date_raw, source_raw, bounce_rate_raw
FROM analytics_events
WHERE bounce_rate_raw = '100,00%'
LIMIT 7
Главные выводы
- Текст = Кавычки: Любое значение с буквами, знаками %, запятыми или дефисами — это строка. Её всегда в 'одинарные кавычки'.
- Точное совпадение: Оператор = найдет только те строки, где написано символ-в-символ так, как ты указал. Если в базе "100%", а ты ищешь "100.0%", запрос ничего не найдет.
Типичная ошибка
Использование SELECT только для тех полей, по которым фильтруем. Всегда добавляй контекст (например, date_raw), чтобы отчет имел смысл для человека, а не только для машины.
Базовые правила SELECT для аналитика
1. Любой запрос начинается с бизнес-вопроса
Плохие запросы отвечают на «что SQL смог».
Хорошие — на «что я хочу понять».
2. SELECT — только нужные поля
-
не тащи всё
-
каждое поле должно быть объяснимо бизнесу
-
если не можешь объяснить — оно лишнее
3. FROM — всегда реальная таблица
-
не поле
-
не предположение
-
проверяем фактами, а не памятью
4. ORDER BY обязателен почти всегда
Без сортировки:
-
порядок строк не гарантирован
-
LIMITтеряет смысл -
отчеты становятся случайными
5. Направление сортировки указывай явно
ORDER BY date_raw DESC
Почему:
-
ASCставится по умолчанию -
SQL решает за тебя
-
он не знает, что ты маркетолог
6. Иерархия сортировки
Всегда сверху вниз по смыслу:
-
Время (
date_raw) -
Деньги (
revenue_raw) -
Конверсии (
goal_sales_raw) -
Трафик (
visits_raw)
ORDER BY date_raw DESC, revenue_raw DESC
7. LIMIT — только после сортировки
Иначе ты смотришь:
-
не «последние дни»
-
а «первые попавшиеся строки»
8. Рабочий запрос ≠ правильный отчет
SQL может выполниться:
-
без ошибок
-
быстро
-
красиво
И при этом быть логически неверным.
Контрольное правило (запомни намертво)
Если ты не можешь одним предложением сказать,
что именно показывает запрос,
значит запрос плохой.
Словарь
#Словарь бойца (База)
Основные команды
| Команда | Перевод | Что делает на самом деле |
|---|---|---|
| SELECT | Выбрать | Говорит базе, какие колонки показать. Если не указал колонку здесь — в отчете её не увидишь. |
| FROM | Из | Указывает имя таблицы, откуда берем данные. |
| WHERE | Где | Фильтр. Отсекает лишние строки. Пропускает только те, что выполняют условие. |
| LIMIT | Лимит | Ограничивает количество строк в выдаче. |
| Знак | Название | Правило использования |
|---|---|---|
* |
Звездочка | "Дай всё". Означает выбрать все колонки без разбора. |
, |
Запятая | Разделитель перечисления в SELECT. |
' |
Одинарные кавычки | Обязательны для текста и дат. |
-- |
Два дефиса | Начало комментария. База игнорирует всё, что написано после них в этой строке. |
| Термин | Что это | Пример из наших данных |
|---|---|---|
| Таблица | Место, где лежат все данные. | analytics_events |
| Колонка (Поле) | Вертикальный столбец. Конкретный параметр. | visits_raw (визиты), revenue_raw (выручка). |
| Строка (Запись) | Горизонтальная строка. Одно событие. | Одна конкретная запись за 05.01.2026. |