BIG_DATA_SYSTEMS_ANALYSIS Telegram 122
Как 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 #оконные_функции
11



tgoop.com/big_data_systems_analysis/122
Create:
Last Update:

Как 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 #оконные_функции

BY В мире больших данных


Share with your friend now:
tgoop.com/big_data_systems_analysis/122

View MORE
Open in Telegram


Telegram News

Date: |

The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said. Read now Unlimited number of subscribers per channel Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations.
from us


Telegram В мире больших данных
FROM American