Первые шаги в SQL для аналитика: что знать до начала
За один короткий сеанс вы создадите учебную таблицу и напишете запрос, который покажет выручку по регионам. Примеры рассчитаны на PostgreSQL 16: разберём SELECT, фильтры, сортировку и группировку.

За один короткий сеанс вы создадите учебную таблицу и получите выручку по регионам — без готовой базы и сложной настройки. Примеры рассчитаны на PostgreSQL 16 и подойдут для знакомства с тем, как аналитик выбирает, фильтрует и агрегирует данные.
Что понадобится до начала
SQL — это язык запросов к базам данных. Здесь мы используем PostgreSQL 16: команды можно запускать в psql или в SQL-редакторе, подключённом к вашей базе. У других систем — например, MySQL или BigQuery — часть синтаксиса и настройки отличается.
| Что подготовить | Что именно нужно |
|---|---|
| База данных | PostgreSQL 16 или доступ к серверу с этой версией |
| Инструмент | psql или графический клиент с окном для SQL-запросов |
| Доступ | Разрешение подключаться к базе и создавать временные таблицы |
| Соединение | Одна и та же база и одна сессия на протяжении примеров |
Не запускайте учебные команды в рабочей базе без разрешения: запросы ниже создают временную таблицу в текущем подключении. Она пропадёт после завершения сессии.
Четыре шага: от таблицы до выручки
Создайте небольшой набор данных. Выполните блок целиком. В нём есть дата заказа, товар, регион и сумма.
CREATE TEMP TABLE sales_demo_sql_start ( order_id integer PRIMARY KEY, ordered_at date NOT NULL, product text NOT NULL, region text NOT NULL, amount numeric(10, 2) NOT NULL ); INSERT INTO sales_demo_sql_start (order_id, ordered_at, product, region, amount) VALUES (1, DATE '2025-01-10', 'Кофе', 'Север', 1200.00), (2, DATE '2025-01-11', 'Чай', 'Юг', 700.00), (3, DATE '2025-01-12', 'Кофе', 'Север', 900.00), (4, DATE '2025-01-13', 'Чай', 'Север', 500.00), (5, DATE '2025-01-14', 'Кофе', 'Юг', 1500.00), (6, DATE '2025-01-15', 'Чай', 'Юг', 800.00); SELECT count(*) AS order_count FROM sales_demo_sql_start;Проверка: запрос вернул одну строку с числом 6. Если запускаете блок повторно в той же сессии, временную таблицу сначала нужно удалить или открыть новое подключение.
Выберите нужные столбцы. Звёздочка означает «все столбцы», но в аналитическом запросе обычно лучше перечислять только те, которые нужны: результат легче читать, а лишние данные не передаются.
SELECT product, amount FROM sales_demo_sql_start;Проверка: в результате шесть строк и два столбца — товар и сумма.
Отфильтруйте и отсортируйте строки. Условие после
WHEREоставляет заказы из Северного региона на сумму не меньше 900.ORDER BYставит самые крупные суммы первыми.SELECT ordered_at, product, amount FROM sales_demo_sql_start WHERE region = 'Север' AND amount >= 900 ORDER BY amount DESC;Проверка: получатся две строки — сначала заказ на 1200, затем на 900. Если поменять
ANDнаOR, условие станет шире и результат изменится: это частая причина неожиданного числа строк.Сгруппируйте заказы и посчитайте выручку.
GROUP BYсобирает строки с одинаковым регионом, аSUMскладывает их суммы.COUNTсчитает количество заказов в каждой группе.SELECT region, count(*) AS order_count, sum(amount) AS revenue FROM sales_demo_sql_start GROUP BY region ORDER BY revenue DESC;Проверка: появятся два региона. Для Юга выручка составит 3000, для Севера — 2600; у каждого региона будет по три заказа.
Запрос не «понимает» смысл таблицы: он выполняет условия, которые вы задали. Поэтому сначала проверьте, какие строки отобрались, и только потом доверяйте итоговой сумме.
Как читать запрос, не теряя нить
В примерах команды записаны в привычном порядке: SELECT, FROM, WHERE, GROUP BY, ORDER BY. Это порядок записи, а не точная последовательность обработки. Для начала держите в голове простой план: откуда берём данные, какие строки оставляем, какие показатели считаем и как сортируем результат.
Агрегация — сведение нескольких строк к одному показателю, например суммы заказов по каждому региону. В этом примере агрегацию выполняют SUM и COUNT, а GROUP BY задаёт группы.¹
Ещё одна полезная привычка — давать результатам понятные имена через AS, как в AS revenue. Так вместо названия функции в таблице появится revenue. Здесь мы разбираем только базовую выборку и агрегацию; соединение таблиц и обработка пропусков — отдельные темы.
Если запрос не сработал
ERROR: relation "sales_demo_sql_start" does not exist— таблицы нет в текущей сессии. Сначала выполните шаг 1 и проверьте, что редактор не переключил подключение или вкладку на другую базу.ERROR: syntax error at or near ...— проверьте запятые между полями, скобки и кавычки. SQL-команды в примере заканчиваются точкой с запятой; выделенный для выполнения фрагмент должен включать весь запрос.ERROR: column "region" does not exist— возможно, запрос запущен не для учебной таблицы или в вашей таблице поле называется иначе. Сверьте имя с определением таблицы: PostgreSQL не угадывает, какой столбец вы имели в виду.ERROR: permission denied for table ...— у вашей учётной записи нет нужных прав. Попросите администратора выдать разрешение или используйте учебную базу, где создание таблиц разрешено.
Что делать дальше
Возьмите копию учебного запроса и изменяйте по одному условию: добавьте товар в выборку, поменяйте сортировку, посчитайте среднюю сумму через AVG(amount). Каждый раз сравнивайте число строк с ожиданием и вручную проверяйте результат на нескольких заказах. На рабочей базе перед расчётом выручки отдельно выясните, что именно означает сумма, как учитываются возвраты и не дублируются ли заказы из-за связей между таблицами.
¹ Агрегация — расчёт сводного показателя по одной или нескольким группам строк.
IT-архитектор / SQL-оптимизатор: Поиск N+1, оптимизация запросов, code review, поиск багов.
Спросить за 20 ₽Источники: PostgreSQL 16 — документация, PostgreSQL 16 — SELECT
Частые вопросы
Можно ли повторить примеры в MySQL или BigQuery?
Почему таблица исчезла после отключения?
Что делать, если запрос вернул не те строки?
Нужно ли знать программирование, чтобы начать с SQL?
Можно ли запускать такие запросы в продакшене?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.