Образование и курсы

SQL с нуля: минимальный набор запросов для аналитика и не только

2 минуты чтения
SQL с нуля: минимальный набор запросов для аналитика и не только

Практический путь изучения SQL: SELECT, JOIN, агрегации, оконные функции, типичные ошибки и задачи с собеседований.

SQL с нуля: минимальный набор для аналитика

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

Порядок изучения

ШагЧто осваиваемВремя
1SELECT, WHERE, ORDER BY, LIMIT2–3 дня
2Агрегации: COUNT, SUM, AVG, GROUP BY, HAVING3 дня
3JOIN: INNER, LEFT, дубликаты при соединении4 дня
4Подзапросы и CTE (WITH)3 дня
5Оконные функции: ROW_NUMBER, SUM OVER, LAG5 дней
6Даты, строки, CASE, приведение типов3 дня
7Производительность: индексы, план запроса3 дня

Итого около трёх недель по часу в день — и вы закрываете 90% рабочих задач.

Три задачи, которые спрашивают почти всегда

1. Топ-3 товара по выручке в каждой категории

WITH ranked AS (
  SELECT category, product, SUM(amount) AS revenue,
         ROW_NUMBER() OVER (PARTITION BY category ORDER BY SUM(amount) DESC) AS rn
  FROM sales
  GROUP BY category, product
)
SELECT category, product, revenue FROM ranked WHERE rn <= 3;

2. Пользователи, которые не сделали ни одного заказа

SELECT u.id, u.email
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;

3. Конверсия по месяцам

SELECT date_trunc('month', created_at) AS m,
       COUNT(*) FILTER (WHERE status = 'paid')::numeric / COUNT(*) AS cr
FROM orders
GROUP BY 1
ORDER BY 1;

Частые ошибки новичков

  • Дубликаты после JOIN. Соединение по неуникальному ключу размножает строки — всегда проверяйте COUNT до и после.
  • WHERE вместо HAVING. Фильтр по агрегату работает только в HAVING.
  • NULL в сравнениях. NULL <> 5 не вернёт строки: используйте IS NULL / IS NOT NULL.
  • Деление целых чисел. Приводите к numeric, иначе конверсия окажется нулём.
  • **SELECT *** в продовых запросах — лишняя нагрузка и хрупкость.

Где практиковаться

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

Дальше: аналитик данных и системный аналитик.

FAQ

Какой диалект учить? PostgreSQL: он ближе всего к стандарту и чаще всего встречается в вакансиях.

Нужны ли оконные функции джуну? Да, это главный водораздел между «умею SELECT» и «умею аналитику».

Сколько времени занимает освоение базового SQL? При 1–2 часах в день база (SELECT, WHERE, JOIN, GROUP BY, подзапросы) укладывается в 3–4 недели. Ещё месяц уходит на оконные функции и оптимизацию запросов.

Как тренироваться без доступа к рабочей базе? Разверните локально PostgreSQL или SQLite с открытым датасетом и решайте задачи на тренажёрах. Важно писать запросы под конкретный вопрос бизнеса, а не только по шаблону упражнения.

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

Поделиться статьёй

TelegramVK ВКонтактеM MAX

Похожие статьи