LAG (оконная)

Синтаксис

LAG( value [ , offset [ , default ] ] )
LAG( value [ , offset [ , default ] ]     [ TOTAL | WITHIN ... | AMONG ... ]     [ ORDER BY ... ]     [ BEFORE FILTER BY ... ]   )

Подробнее:

Описание

Важно

Сортировка осуществляется на основе полей, перечисленных в области сортировки в чарте и в ORDER BY. При этом сначала берутся поля из ORDER BY.

Возвращает значение value из строки со смещением offset относительно текущей в рамках заданного окна:

  • положительное значение offset делает смещение назад;
  • отрицательное значение offset делает смещение вперед.

По умолчанию offset равно 1.

Если значение отсутствует (offset ссылается на строку до первой или после последней), то возвращается значение default в качестве результата. Если default не задано, то используется NULL.

См. также AGO в качестве неоконной альтернативы.

Типы аргументов:

  • valueЛюбой
  • offsetЦелое число
  • defaultЛюбой

Возвращаемый тип: Совпадает с типом аргументов (value)

Примечание

Значения аргументов (offset, default) должны быть константами.

Примеры

Пример с группировкой

Исходные данные

DateCityCategoryOrdersProfit
'2019-03-01''London''Office Supplies'8120.80
'2019-03-04''London''Office Supplies'2100.00
'2019-03-05''London''Furniture'1750.00
'2019-03-02''Moscow''Furniture'21250.50
'2019-03-03''Moscow''Office Supplies'485.00
'2019-03-01''San Francisco''Office Supplies'23723.00
'2019-03-01''San Francisco''Furniture'11000.00
'2019-03-03''San Francisco''Furniture'44000.00
'2019-03-02''Detroit''Furniture'53700.00
'2019-03-04''Detroit''Office Supplies'251200.00
'2019-03-04''Detroit''Furniture'23500.00

Группировка по [City], [Category].

Сортировка по [City], [Category].

Результат

[City][Category]SUM([Orders])LAG(SUM([Orders]) TOTAL)LAG(SUM([Orders]) WITHIN [City])LAG(SUM([Orders]) AMONG [City])
'Detroit''Furniture'7NULLNULLNULL
'Detroit''Office Supplies'2577NULL
'London''Furniture'125NULL7
'London''Office Supplies'101125
'Moscow''Furniture'210NULL1
'Moscow''Office Supplies'42210
'San Francisco''Furniture'54NULL2
'San Francisco''Office Supplies'23554
Пример опциональным аргументом

Исходные данные

DateCityCategoryOrdersProfit
'2019-03-01''London''Office Supplies'8120.80
'2019-03-04''London''Office Supplies'2100.00
'2019-03-05''London''Furniture'1750.00
'2019-03-02''Moscow''Furniture'21250.50
'2019-03-03''Moscow''Office Supplies'485.00
'2019-03-01''San Francisco''Office Supplies'23723.00
'2019-03-01''San Francisco''Furniture'11000.00
'2019-03-03''San Francisco''Furniture'44000.00
'2019-03-02''Detroit''Furniture'53700.00
'2019-03-04''Detroit''Office Supplies'251200.00
'2019-03-04''Detroit''Furniture'23500.00

Группировка по [City].

Сортировка по [City].

Результат

[City]SUM([Orders])LAG(SUM([Orders]), 1)LAG(SUM([Orders]), -2)
'Detroit'32NULL6
'London'113228
'Moscow'611NULL
'San Francisco'286NULL
Пример с ORDER BY

Исходные данные

DateCityCategoryOrdersProfit
'2019-03-01''London''Office Supplies'8120.80
'2019-03-04''London''Office Supplies'2100.00
'2019-03-05''London''Furniture'1750.00
'2019-03-02''Moscow''Furniture'21250.50
'2019-03-03''Moscow''Office Supplies'485.00
'2019-03-01''San Francisco''Office Supplies'23723.00
'2019-03-01''San Francisco''Furniture'11000.00
'2019-03-03''San Francisco''Furniture'44000.00
'2019-03-02''Detroit''Furniture'53700.00
'2019-03-04''Detroit''Office Supplies'251200.00
'2019-03-04''Detroit''Furniture'23500.00

Группировка по [City].

Сортировка по [City].

Результат

[City]SUM([Orders])LAG(SUM([Orders]) ORDER BY [City] DESC)LAG(SUM([Orders]) ORDER BY [Order Sum])
'Detroit'321128
'London'1166
'Moscow'628NULL
'San Francisco'28NULL11

Поддержка источников данных

ClickHouse 21.8, Microsoft SQL Server 2017 (14.0), MySQL 5.7, Oracle Database 12c (12.1), PostgreSQL 9.3.

Previous
Next