SQLLab
Теория· 10 мин· 10 XP

Фреймворк: 5 шагов аналитика

Почему «написать SQL» — это последний шаг

Начинающие аналитики сразу открывают редактор и начинают писать код. Опытные — сначала думают. Хаотичный запрос отражает хаотичное мышление.

5 шагов от задачи к результату

Шаг 1: Понять вопрос

Прочитай задачу и перефразируй своими словами:

  • «Найти клиентов, которые...»
  • «Посчитать для каждого...»
  • «Сравнить X и Y по критерию Z»

Если задача размытая — задай уточняющие вопросы:

  • «За какой период?»
  • «По каким клиентам / продуктам / регионам?»
  • «Что считается активным клиентом?»

Шаг 2: Найти нужные данные

Определи таблицы:

  • Где хранятся нужные сущности? (clients, accounts, transactions)
  • Какие поля нужны?
  • Через какие ключи таблицы связаны?

Нарисуй схему на бумаге (даже простую).

Шаг 3: Декомпозировать на шаги

Сложный запрос = несколько простых шагов. Запиши псевдокод:

код
1. Посчитать сумму транзакций по каждому счёту
2. Соединить со счётами → получить client_id
3. Сложить по клиенту (несколько счетов)
4. Присоединить клиентов → добавить сегмент
5. Отфильтровать VIP с суммой > 50 000
6. Отсортировать по убыванию

Каждый шаг → один CTE.

Шаг 4: Написать запрос

  • Начинай с самого внутреннего подзапроса / первого CTE
  • Проверяй каждый CTE отдельно (SELECT * FROM cte_name)
  • Добавляй шаги постепенно

Шаг 5: Проверить результат

  • Ожидаемый порядок величин? (10 строк или 10 000?)
  • Есть ли NULL там, где не должно быть?
  • Проверь несколько строк вручную

Выбор инструмента

ЗадачаИнструмент
Дать имя промежуточному результатуCTE
Обойти иерархиюWITH RECURSIVE
Агрегат без схлопывания строкОконная функция
Ранжировать внутри группыROW_NUMBER / RANK / DENSE_RANK
Значение предыдущей/следующей строкиLAG / LEAD
Нарастающий итогSUM OVER (ORDER BY ...)
Деление на равные группыNTILE
Доля от общей суммыSUM() OVER ()

Запомни

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

Прочитайте урок до конца — прогресс засчитается автоматически