LAG()
DSQL
LAG(<expr> [, <offset> [, <default>]]) OVER {<window_specification> | window_name}
Параметр | Описание |
---|---|
expr |
Выражение.Может содержать столбец таблицы, константу, переменную, выражение, неагрегатную функцию или UDF.Агрегатные функции в качестве выражения не допускаются. |
offset |
Количество строк до строки перед текущей строкой, из которой необходимо получить значение.Если значение аргумента не указано, то по умолчанию принимается 1.offset может быть столбцом, вложенным запросом или другим выражением, с помощью которого вычисляется целаяположительная величина, или другим типом, который может быть неявно преобразован в |
default |
Значение по умолчанию, которое возвращается, в случае если смещение (offset) указывает за пределы секции.По умолчанию равно |
тот же что и аргумент функции expr
Функция LAG
обеспечивает доступ к строке с заданным физическим смещением (offset) перед началом текущей строки.
Если смещение (offset) указывает за пределы секции, то будет возвращено значение default, которое по умолчанию равно NULL.
Примеры:
LAG
Предположим у вас есть таблица rate
, которая хранит курс валюты на каждый день.Необходимо проследить динамику изменения курса за последние пять дней.
SELECT
bydate,
cost,
cost - LAG(cost) OVER(ORDER BY bydate) AS change,
100 * (cost - LAG(cost) OVER(ORDER BY bydate)) /
LAG(cost) OVER(ORDER BY bydate) AS percent_change
FROM rate
WHERE bydate BETWEEN DATEADD(-4 DAY TO current_date)
AND current_date
ORDER BY bydate
bydate cost change percent_change ---------- ----- ------- -------------- 27.10.2014 31.00 <null> <null> 28.10.2014 31.53 0.53 1.7096 29.10.2014 31.40 -0.13 -0.4123 30.10.2014 31.67 0.27 0.8598 31.10.2014 32.00 0.33 1.0419