Оконные функции LAG и LEAD
В предыдущем посте мы разобрались с параметрами оконных функций, а теперь перейдем к конкретным примерам аналитических функций.
Функции смещения
Эти функции позволяют обращаться к предыдущим или следующим значениям окна.
Функция LAG обращается к данным из предыдущей строки окна, а LEAD – к данным из следующей строки. Эти функции нужны для того, чтобы, например, сравнить текущее значение строки с предыдущим или следующим. Каждая функция имеет три параметра:
- столбец, значение которого необходимо вернуть,
- количество строк для смещения (по умолчанию 1),
- значение, которое необходимо вернуть, если после смещения возвращается значение NULL (к примеру, когда мы ищем предыдущее значение для первой строки окна).
Давайте посмотрим, на примере таблички orders, как работает функция LEAD. Например, если мы хотим увидеть текущую и следующую дату покупки, то запрос будет выглядеть так:
SELECT user_id,
order_date,
LEAD(order_date) OVER (PARTITION BY user_id ORDER BY order_date) as next_order_date,
receipt_no,
amount
FROM orders
Результат запроса в первом комментарии под постом 👇
Теперь попробуйте написать запрос к табличке orders, который посчитает насколько каждая покупка каждого пользователя больше или меньше предыдущей (если предыдущей покупки не было, возьмите текущую суммку покупки и покажите 0 как разницу).
#leftjoin_sql