Перейти к содержимому
Последнее обновление

LAG

Описание​

LAG() — оконная функция, которая позволяет получать данные из предыдущих строк без самообъединения. Она извлекает значения из строки, расположенной на N строк раньше текущей строки в пределах раздела.

Синтаксис​

LAG ( <expr> [, <offset> [, <default> ] ] )

Параметры​

ПараметрОписание
exprВыражение, значение которого нужно получить. Поддерживаемые типы: tinyint/smallint/int/bigint/float/double/decimal/string/date/datetime/
offsetНеобязательный параметр типа Bigint. Количество строк для просмотра вперёд. Значение по умолчанию: 1.
defaultНеобязательный параметр того же типа, что и первый параметр. Значение, возвращаемое, когда смещение выходит за границы окна. Значение по умолчанию: NULL

Возвращаемое значение​

Возвращает значение того же типа данных, что и входное выражение.

Примеры​

Вычислите разницу между текущей суммой продаж каждого продавца и его суммой продаж за предыдущий день:

select stock_symbol, closing_date, closing_price,    
lag(closing_price,1, 0) over (partition by stock_symbol order by closing_date) as "yesterday closing"
from stock_ticker
order by closing_date;
+--------------+---------------------+---------------+-------------------+
| stock_symbol | closing_date | closing_price | yesterday closing |
| ------------ | ------------------- | ------------- | ----------------- |
| JDR | 2014-09-13 00:00:00 | 12.86 | 0 |
| JDR | 2014-09-14 00:00:00 | 12.89 | 12.86 |
| JDR | 2014-09-15 00:00:00 | 12.94 | 12.89 |
| JDR | 2014-09-16 00:00:00 | 12.55 | 12.94 |
| JDR | 2014-09-17 00:00:00 | 14.03 | 12.55 |
| JDR | 2014-09-18 00:00:00 | 14.75 | 14.03 |
| JDR | 2014-09-19 00:00:00 | 13.98 | 14.75 |
+--------------+---------------------+---------------+-------------------+