TGViewer
В мире больших данных В мире больших данных @big_data_systems_analysis · 301 subscribers
Post #122 156
Как lag и lead помогают заглянуть в прошлое и будущее ваших данных

Привет!
Сегодня хочу рассказать про оконные функции lag и lead в SQL. Если кратко: они помогают сравнивать значения между строками.

Например, у вас есть таблица с продажами по дням и вы хотите сравнить сегодняшние продажи со вчерашними. Или увидеть сколько продаж было на следующий день. Здесь и пригодятся функции lag и lead.

Lag смотрит назад, то есть в своём запросе вы можете увидеть то, что было в предыдущей строке. Lead, наоборот, смотрит вперед. С ним вы узнаете, что будет в следующей строке.

Посмотрим на примерах:

SELECT
sales_dt,
sales_amount,
LAG(sales_amount) OVER (ORDER BY sales_dt) AS sales_previous_day,
LEAD(sales_amount) OVER (ORDER BY sales_dt) AS sales_next_day
FROM sales_daily;

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

Также можно использовать эти функции для расчета разницы между значениями:

SELECT
sales_dt,
sales_amount,
sales_amount - LAG(sales) OVER (ORDER BY sales_dt) AS sales_change_daily
FROM sales_daily;

Так можно увидеть насколько выросли или упали продажи по сравнению с предыдущим днем.

Что круто, lag и lead можно применять не только к соседним строкам, а можно заглянуть на несколько дней назад или вперед:

SELECT
sales_dt,
sales_amount,
LAG(sales_amount, 7) OVER (ORDER BY sales_dt) AS sales_week_ago
FROM sales_daily;

Этот запрос покажет продажи за сегодня и за неделю до этого.

Кроме того, lag и lead часто используют для заполнения пропусков в данных. Если у вас нет данных за какой-то день, вы можете взять значение из предыдущего дня (обратите внимание, что пример ниже не бизнесовый, а только для отражения возможностей использования функции):

SELECT
sales_dt,
COALESCE(sales_amount, LAG(sales) OVER (ORDER BY sales_dt)) AS sales_filled
FROM sales_daily;


Теперь вы знаете, как использовать lag и lead. Эти функции помогут лучше понимать ваши данные и находить интересные закономерности.

#sql #оконные_функции
  • ❤ 1
  • ✍ 1
More from @big_data_systems_analysis
  1. Jul 28, 2026Продолжая тему тех самых SQL-скриптов на 1200 строк, хочу напомнить одну важную вещь, кото…
  2. Jul 15, 2026Борьба с ветряными мельницами Думаю, многим из вас уже набили оскомину разговоры об ИИ. Мн…
  3. Mar 8, 2026В этот день желаю женской части аудитории верить в себя и позволять быть себе любой без ог…
  4. Mar 6, 2026Этот мем — точная копия одного рабочего дня, который я, кажется, прожила уже раз двести 😄…
  5. Mar 4, 2026Знаете, какая фраза чаще всего дорого обходится компании? "Работает — и ладно" 🥂 Результа…
  6. Feb 26, 2026Дисциплина, конечно, прошла мимо меня 😄 в черновиках 1000 и 1 пост, но ни один из них не…
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 →