TGViewer
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) @dima_sqlit · 2.22K subscribers
Post #139 1.61K
📈 Скользящее среднее (Moving Average): как увидеть реальный тренд сквозь шум данных

Представьте ситуацию: вы строите бизнесу график дневной выручки, а там — настоящая «кардиограмма». В выходные пик, в понедельник провал, в праздник аномальный выброс. Смотришь на эти качели и не понимаешь: мы глобально растем или летим в пропасть?

Данные часто содержат «шум». Чтобы увидеть реальный тренд, используется Скользящее среднее (Moving Average). Если коротко: мы берем каждую дату и считаем среднее значение не только за этот день, но и за N предыдущих. График выравнивается, и скрытое становится явным.

Разберем на практике: 👨‍💻

Допустим, нам нужно сгладить дневную выручку (revenue) за 7 дней. В SQL это элегантно решается через оконные функции:
SELECT 
dt,
revenue,
AVG(revenue) OVER (
ORDER BY dt
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) as ma_7d
FROM daily_revenue;


Здесь магия кроется в ROWS BETWEEN 6 PRECEDING AND CURRENT ROW. Мы буквально говорим базе: «для каждой даты возьми текущую строку и 6 строк до неё, а потом усредни».

🛑 Главная ловушка — проблема «Холодного старта»:

Частый вопрос на собесах:
«А что будет с первой строкой в таблице? У неё же нет истории за 6 дней!»

SQL не упадет с ошибкой. Для 1-го дня он посчитает среднее только по 1 дню. Для 2-го — по 2-м. Окно будет постепенно «накапливаться», пока не достигнет 7 дней.
Как с этим жить: Если вам нужна идеальная математическая точность для аналитики, первые дни периода (пока окно не наполнилось) на итоговом графике просто отрезают, чтобы они не искажали картину.

🟢 Как выбрать правильный интервал (окно):

Выбор зависит от того, какие циклы есть в вашем бизнесе:
1️⃣ 7 дней (МА-7) — Золотой стандарт для ритейла и e-commerce. Такое окно захватывает ровно одни выходные и пять будней. Недельная сезонность полностью исчезает с графика.
2️⃣ 28-30 дней — Отлично показывает глобальный тренд месяца. Помогает сгладить эффект от разовых промо-акций или зарплатных дней у клиентов.
3️⃣ 3 дня — Используют для метрик, где критически важно быстро заметить падение (например, конверсия в оплату после релиза новой фичи), но нужно сгладить совсем уж случайные колебания.

Итог: 🤩

🍸 Сохраняйте пост, чтобы информация была всегда под рукой.
❓ А вы использовали скользящее среднее в своих задачах? Какие интервалы обычно берете? Пишите в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
  • ❤‍🔥 25
  • 🐳 8
  • 🔥 6
More from @dima_sqlit
  1. Sep 22, 2026Что сейчас стоит изучать Аналитику — чтобы перейти в DS/ML ? Замечаю общий тренд на изучен…
  2. Sep 21, 2026🧠 Уровень абстракции — навык, который сэкономит вам годы учёбы: Когда я начинал изучать P…
  3. Sep 18, 2026🏦 Задача с собеса в Т-банк на SQL: вторая зарплата в отделе Условие: есть таблица сотрудн…
  4. Sep 16, 2026🏠 IT ипотека (Часть 3) — Как я сэкономил на ремонте: кэшбэк, промокоды и один неочевидный…
  5. Sep 7, 2026🍂 Осень — сезон найма: Каждый год одна и та же история — в сентябре рынок будто просыпает…
  6. Aug 24, 2026P-value простыми словами: Условие: подбросили монету 10 раз, выпало 9 орлов. Можно ли тепе…
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 →