SQL для начинающих аналитиков: базовые запросы, которые нужны в работе

SQL — это язык, с помощью которого аналитики получают, фильтруют и объединяют данные из баз. Если вы только входите в аналитику, именно базовые SQL-запросы чаще всего нужны в реальной работе: посмотреть таблицу, отобрать нужные строки, посчитать метрики, собрать отчет и проверить гипотезу.

В этой статье разберем SQL для начинающих аналитиков простым языком: какие запросы нужно знать в первую очередь, как они применяются на практике и какие ошибки чаще всего мешают новичкам.

Что такое SQL и зачем он нужен аналитику

SQL расшифровывается как Structured Query Language — язык структурированных запросов. На практике это способ «разговаривать» с базой данных: просить показать данные, отфильтровать их, сгруппировать или соединить между собой разные таблицы.

Для аналитика SQL особенно важен, потому что данные почти никогда не лежат в одном удобном Excel-файле. Обычно они распределены по таблицам: пользователи, заказы, платежи, события, рекламные расходы. SQL помогает быстро собрать нужную картину без ручной выгрузки и долгой обработки. Я не раз сталкивался с ситуацией, когда коллеги тратили часы на ручное сведение данных в электронных таблицах, хотя один правильно написанный запрос решал задачу за пару минут.

Где SQL реально используют в работе

  • проверка ежедневных и еженедельных метрик;
  • анализ продаж, заказов и выручки;
  • поиск ошибок в данных;
  • построение отчетов по клиентам, продукту, маркетингу;
  • проверка гипотез перед запуском изменений;
  • подготовка выборок для Power BI, Tableau, Excel и других инструментов.

С чего начать изучение SQL

Новичку не нужно сразу разбирать сложные оконные функции и тонкости оптимизации. В работе чаще всего хватает нескольких базовых конструкций, которые покрывают 80% типовых задач. Это проверено на практике: когда я начинал работать с данными, именно эти запросы закрывали большинство ежедневных потребностей — от быстрой выгрузки до формирования регулярных отчетов.

Минимальный набор, который нужен в первую очередь

  • SELECT — выбрать нужные столбцы;
  • FROM — указать таблицу;
  • WHERE — отфильтровать строки;
  • ORDER BY — отсортировать результат;
  • LIMIT — ограничить количество строк;
  • GROUP BY — сгруппировать данные;
  • HAVING — отфильтровать группы;
  • JOIN — соединить таблицы;
  • агрегатные функции COUNT, SUM, AVG, MIN, MAX.

Этого уже достаточно, чтобы решать многие рабочие задачи начинающего аналитика. Более того, если вы уверенно владеете этим набором, то можете смело браться за первые реальные проекты — остальное будет добираться по мере усложнения задач.

Базовые SQL-запросы: что они делают и когда нужны

Запрос Что делает Когда использовать
SELECT Выбирает столбцы Когда нужно посмотреть данные
FROM Указывает таблицу Всегда, если вы обращаетесь к данным
WHERE Фильтрует строки Когда нужны только нужные записи
ORDER BY Сортирует результат Для удобного просмотра и анализа
LIMIT Ограничивает вывод Когда достаточно нескольких строк
GROUP BY Собирает данные по группам Для подсчета метрик по категориям
HAVING Фильтрует группы Когда нужно оставить только нужные группы
JOIN Соединяет таблицы Когда данные лежат в разных источниках

Первый запрос: как посмотреть данные

Самый простой запрос в SQL выглядит так:

SELECT * FROM users;

Он выводит все столбцы из таблицы users. Звездочка * означает «все столбцы».

На практике аналитики редко используют SELECT * в рабочих запросах, потому что он может вернуть лишние данные. Лучше сразу указывать нужные поля:

SELECT name, city, registration_date FROM users;

Так запрос становится понятнее, быстрее и безопаснее для анализа. Когда вы явно перечисляете столбцы, вы не только экономите ресурсы базы данных, но и делаете запрос самодокументируемым — любой коллега сразу поймет, какие именно данные вы запрашиваете.

Типичная ошибка новичка

Новички часто выбирают вообще все столбцы, хотя им нужен только один или два. Это делает результат громоздким и мешает сосредоточиться на важном. Особенно это критично, когда в таблице десятки полей, а реально нужны три-четыре — вы просто тонете в информационном шуме.

Фильтрация данных с помощью WHERE

Если вам нужны не все строки, а только часть, используется WHERE.

SELECT name, city FROM users WHERE city = 'Москва';

Этот запрос покажет только пользователей из Москвы.

Полезные операторы в WHERE

  • = — равно;
  • != или <> — не равно;
  • > — больше;
  • < — меньше;
  • >= — больше или равно;
  • <= — меньше или равно;
  • IN — входит в список;
  • BETWEEN — в диапазоне;
  • LIKE — поиск по шаблону;
  • IS NULL — значение отсутствует.

Пример с несколькими условиями

SELECT order_id, amount, status 
FROM orders 
WHERE status = 'paid' AND amount > 5000;

Здесь выбираются только оплаченные заказы дороже 5000. Комбинирование условий через AND и OR — это то, с чем вы будете сталкиваться ежедневно. Главное — не забывать про скобки, когда логика становится сложнее: без них порядок вычисления условий может дать неожиданный результат.

Что важно помнить

  • текстовые значения обычно пишутся в кавычках;
  • даты часто требуют отдельного формата;
  • пропущенные значения не сравниваются через = NULL, для этого используют IS NULL.

Сортировка и ограничение строк

Когда результат слишком большой, его удобно отсортировать и посмотреть только верхнюю часть.

SELECT order_id, amount 
FROM orders 
ORDER BY amount DESC 
LIMIT 10;

Этот запрос покажет 10 самых дорогих заказов.

Когда это полезно

  • посмотреть самые большие продажи;
  • найти последние события;
  • быстро оценить диапазон значений;
  • проверить качество данных.

Я часто использую такой подход на этапе знакомства с новой таблицей: сортирую по ключевым полям и смотрю первые и последние строки — это дает быстрое понимание структуры данных и возможных аномалий.

Важный нюанс

ORDER BY DESC сортирует по убыванию, а ASC — по возрастанию. Если направление не указано, по умолчанию часто используется возрастание.

Агрегатные функции: как считать показатели

Агрегатные функции нужны, когда вы считаете не отдельные строки, а итоговые показатели.

Основные функции

  • COUNT() — количество;
  • SUM() — сумма;
  • AVG() — среднее;
  • MIN() — минимальное значение;
  • MAX() — максимальное значение.

Примеры

SELECT COUNT(*) FROM orders;
SELECT SUM(amount) FROM orders WHERE status = 'paid';
SELECT AVG(amount) FROM orders;

Агрегаты — основа большинства аналитических запросов. Если вы умеете считать количество, сумму и среднее, вы уже можете отвечать на множество рабочих вопросов. По сути, любой бизнес-отчет строится вокруг этих функций: сколько продали, на какую сумму, какой средний чек — это база, с которой начинается аналитика.

Группировка данных с помощью GROUP BY

Если нужно посчитать показатели по категориям, используется GROUP BY.

SELECT city, COUNT(*) 
FROM users 
GROUP BY city;

Этот запрос покажет, сколько пользователей в каждом городе.

Когда GROUP BY особенно нужен

  • продажи по регионам;
  • выручка по менеджерам;
  • количество заказов по дням;
  • пользователи по каналам привлечения;
  • ошибки по типам событий.

Как это работает простыми словами

Сначала SQL собирает строки в группы по выбранному признаку, а потом считает показатель внутри каждой группы. Это как если бы вы вручную раскладывали данные по папкам и считали содержимое каждой папки отдельно. Именно такой подход я использую, когда объясняю группировку новичкам: представьте, что вы сортируете бумажные документы по городам, а затем подсчитываете количество в каждой стопке.

Фильтрация после группировки: HAVING

WHERE работает до группировки, а HAVING — после нее.

SELECT city, COUNT(*) as user_count 
FROM users 
GROUP BY city 
HAVING COUNT(*) > 100;

Здесь останутся только те города, где больше 100 пользователей.

Главное отличие от WHERE

  • WHERE фильтрует отдельные строки;
  • HAVING фильтрует уже готовые группы.

Это одна из самых частых тем, где новички путаются. Если правило относится к каждой строке — нужен WHERE. Если правило относится к результату группировки — нужен HAVING. Практический лайфхак: спросите себя, можно ли применить условие до того, как данные сгруппировались. Если да — это WHERE, если нет — HAVING.

JOIN: как соединять таблицы

В реальной аналитике данные часто лежат в разных таблицах. Например, в одной таблице — пользователи, в другой — их заказы. Чтобы увидеть их вместе, используют JOIN.

SELECT users.name, orders.amount 
FROM users 
JOIN orders ON users.user_id = orders.user_id;

Здесь таблица users соединяется с таблицей orders по полю user_id.

Основные виды JOIN

Вид JOIN Что возвращает Когда использовать
INNER JOIN Только совпавшие строки Когда нужны только связанные записи
LEFT JOIN Все строки из левой таблицы и совпадения справа Когда важно сохранить всю основную таблицу
RIGHT JOIN Все строки из правой таблицы Используется реже
FULL JOIN Все строки из обеих таблиц Когда нужно увидеть все данные, включая несопоставленные

Что особенно важно новичку

Для аналитика чаще всего достаточно INNER JOIN и LEFT JOIN. Именно они используются в большинстве задач: объединить пользователей и заказы, события и сессии, расходы и конверсии. LEFT JOIN особенно полезен, когда вы хотите сохранить все записи из основной таблицы, даже если по ним нет связанных данных — например, найти пользователей, которые ни разу не делали заказ.

Пошаговый пример: как аналитик собирает простой отчет

Представим, что нужно узнать выручку по городам за оплаченные заказы.

Шаг 1. Определить таблицы

  • users — данные о пользователях;
  • orders — данные о заказах.

Шаг 2. Соединить таблицы

SELECT users.city, orders.amount 
FROM users 
JOIN orders ON users.user_id = orders.user_id 
WHERE orders.status = 'paid';

Шаг 3. Сгруппировать и посчитать

SELECT users.city, SUM(orders.amount) as total_revenue 
FROM users 
JOIN orders ON users.user_id = orders.user_id 
WHERE orders.status = 'paid' 
GROUP BY users.city 
ORDER BY total_revenue DESC;

Этот запрос покажет выручку по городам, отсортированную от большей к меньшей.

Что делает такой запрос полезным

Он показывает не просто данные, а уже готовую бизнес-метрику. Именно так SQL помогает аналитику превращать сырые записи в ответы для бизнеса. Обратите внимание на последовательность: мы не пытаемся написать всё сразу, а идем по шагам — соединили, отфильтровали, сгруппировали, отсортировали. Такой подход здорово снижает количество ошибок и делает отладку запроса гораздо проще.

Типовые ошибки начинающих аналитиков

  • путают WHERE и HAVING;
  • используют SELECT * там, где нужны только 2–3 столбца;
  • забывают про JOIN и пытаются анализировать таблицы отдельно;
  • неправильно считают количество из-за дублирующихся строк;
  • не проверяют, как база обрабатывает NULL;
  • сортируют данные, но забывают ограничить вывод;
  • не смотрят на тип данных и получают странные результаты.

Отдельно выделю проблему с дубликатами при соединении таблиц — это, пожалуй, самая коварная ошибка. Когда вы делаете JOIN, количество строк может неожиданно вырасти, если связь не уникальна. Всегда проверяйте количество строк до и после соединения, особенно когда считаете суммы и средние значения.

Как быстрее освоить SQL на практике

Изучение SQL идет быстрее, если не просто читать команды, а сразу решать задачи.

Рабочий способ тренировки

  1. Возьмите учебную или тестовую базу данных.
  2. Начните с простых запросов на выборку.
  3. Добавьте фильтрацию и сортировку.
  4. Перейдите к группировке и агрегатам.
  5. Потом соединяйте таблицы через JOIN.
  6. Каждый новый запрос проверяйте вручную на маленьком объеме данных.

Что тренировать в первую очередь

  • чтение таблиц;
  • фильтрацию по условиям;
  • подсчет метрик;
  • группировку по категориям;
  • соединение таблиц;
  • понимание, почему результат получился именно таким.

Последний пункт — самый важный. Недостаточно просто получить цифры, нужно уметь объяснить, откуда они взялись. Когда вы проверяете запрос на маленькой выборке и можете вручную пересчитать результат, вы формируете правильное понимание того, как работает SQL, а не просто заучиваете синтаксис.

Чек-лист: базовые SQL-запросы, которые стоит знать

  • вы умеете выбирать нужные столбцы через SELECT;
  • вы понимаете, зачем нужен FROM;
  • вы фильтруете строки через WHERE;
  • вы сортируете данные через ORDER BY;
  • вы ограничиваете результат через LIMIT;
  • вы считаете показатели через COUNT, SUM, AVG;
  • вы группируете данные через GROUP BY;
  • вы фильтруете группы через HAVING;
  • вы соединяете таблицы через JOIN.

Если эти пункты уже понятны, у вас есть нормальная база для первой аналитической работы.

FAQ

Нужно ли аналитику знать сложный SQL сразу?

Нет. Для старта достаточно базовых запросов: выборка, фильтрация, сортировка, группировка, агрегаты и JOIN. Более сложные конструкции можно осваивать по мере появления задач. Более того, попытка выучить всё сразу часто приводит к путанице и разочарованию — гораздо эффективнее наращивать сложность постепенно, когда текущего инструментария перестает хватать.

Что важнее: SQL или Excel?

Для начинающего аналитика полезны оба инструмента. Excel помогает быстро проверить логику и визуально разобрать данные, а SQL нужен для работы с базами и автоматизации повторяющихся запросов. Я обычно советую так: если данных меньше 100 тысяч строк и задача разовая — Excel вполне справится. Если данные измеряются миллионами записей или отчет нужно строить регулярно — без SQL уже не обойтись.

С какого запроса лучше начать обучение SQL?

Лучше всего начать с SELECT, потом перейти к WHERE, затем к ORDER BY и LIMIT. После этого можно изучать GROUP BY и JOIN. Такая последовательность естественна: сначала вы учитесь смотреть на данные, потом отбирать нужное, затем структурировать вывод, и только после этого — объединять разные источники.

Почему запрос работает, но результат неправильный?

Чаще всего причина в неверном соединении таблиц, дубликатах, пропущенных значениях или неправильной логике фильтрации. В таких случаях полезно разбить запрос на части и проверить каждый шаг отдельно. Я всегда рекомендую начинать отладку с проверки количества строк на каждом этапе: сколько строк в исходных таблицах, сколько после JOIN, сколько после WHERE — это помогает быстро локализовать проблему.

Можно ли выучить SQL только по теории?

Полноценно — нет. SQL лучше всего осваивается на практике: чем больше реальных запросов вы пишете, тем быстрее начинаете понимать логику данных и типовые рабочие сценарии. Теория дает каркас, но настоящее понимание приходит только когда вы сталкиваетесь с реальными данными, их неожиданными особенностями и необходимостью получить конкретный ответ здесь и сейчас.

SQL для начинающего аналитика — это не набор абстрактных команд, а рабочий инструмент, который каждый день помогает быстро получать ответы из данных. Если вы уверенно используете SELECT, WHERE, GROUP BY, HAVING и JOIN, вы уже можете решать значительную часть типовых аналитических задач и постепенно переходить к более сложным сценариям.