TGViewer
Симулейтив Симулейтив @simulative_official · 7.44K subscribers
Post #2628 2.01K
5 SQL-принципов, которые использует senior-аналитик

Привет! На связи Владимир Лунев, fullstack-аналитик и автор тренинга «Продвинутый SQL».

Аналитик уровня senior — это не только тот, кто знает сложные JOIN’ы, но и умеет строить из них систему. Если вы хотите перейти от просто метрик к построению аналитической культуры в компании, вот несколько универсальных принципов:

1️⃣ Читаемость важнее краткости

Запрос должен не только хорошо работать, но и быть понятен коллеге даже через полгода. Используйте осмысленные имена CTE (например, new_users, а не cte1), вертикальное форматирование, комментарии для неочевидной логики и единый стиль — например, ключевые слова заглавными буквами.

2️⃣ Оконные функции

ROW_NUMBER(), RANK(), LAG(), LEAD(), SUM() OVER() — это базовый инструмент для любого продвинутого анализа. С их помощью вы сравниваете периоды без self-join’ов, считаете кумулятивные метрики и выделяете топ-N в сегментах. Большинство задач, требующих нескольких подзапросов, решаются одной оконной функцией.

3️⃣ Проверяйте данные

Senior-аналитик — это детектив данных. Перед тем как строить выводы, всегда задавайте вопросы:
🟠 Есть ли дубли по уникальному ключу?
🟠 Есть ли аномальные значения (отрицательные цены, даты/id не из нужного диапазона)?
🟠 Сколько пропусков в ключевых полях?
🟠 Соответствует ли распределение ожиданиям?

Простой пример проверки (все user_id должны быть уникальны и заполнены):

SELECT 
COUNT(*) AS total,
COUNT(user_id) AS non_null_user_id,
COUNT(DISTINCT user_id) AS unique_users
FROM events;


Если non_null_user_id < total — у вас есть пропуски в данных.
Если unique_users < non_null_user_id — дубли.

4️⃣ Оптимизируйте не ради скорости, а ради устойчивости

Senior-аналитик не гонится за самым быстрым запросом и избегает тех, которые ломают систему вызывая высокую нагрузку и длительное ожидание выполнения.

Универсальные правила:
➖ Не используйте SELECT * — запрашивайте только нужные поля;
➖ Избегайте вложенных подзапросов там, где хватит JOIN’а;
➖ Ограничивайте выборки на ранних этапах (WHERE до GROUP BY);
➖ Не делайте DISTINCT «на всякий случай» — разбирайтесь, почему возникают дубли.

5️⃣ Понимайте источник данных, не только таблицу

Опытный аналитик знает, как данные попадают в таблицу, как часто обновляются и есть ли задержки — например, данные за вчера доступны только к 10 утра. Ваш запрос всегда должен давать один и тот же результат при повторном запуске (при условии, что данные в БД не поменялись). Это помогает интерпретировать результаты правильно и не делать ложных выводов.

🧡 Начните применять эти принципы, и вы перестанете быть тем, кто пишет только запросы. Вы станете тем, к кому приходят за решениями!

📊 Simulative
  • ❤ 18
  • 🔥 14
  • 👍 5
More from @simulative_official
  1. Oct 14, 2026Post #3620
  2. Oct 13, 2026💻💻💻💻💻 Падение продаж: как аналитик превращает размытый вопрос в расследование? Руково…
  3. Oct 13, 2026💻 Почему ваш SQL-запрос выполняется не так, как вы его написали? Кажется логичным, что ба…
  4. Oct 12, 2026#проанализировали_и_поняли
  5. Oct 11, 2026❗️ Перенос вебинара с Евгением Буториным Друзья, к сожалению, по техническим причинам пере…
  6. Oct 9, 2026💻💻💻💻💻 Как выбрать своё направление в аналитике? Решаешь войти в аналитику, открываешь…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →