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) должны быть константами.

Примеры

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

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

Date City Category Orders Profit
'2019-03-01' 'London' 'Office Supplies' 8 120.80
'2019-03-04' 'London' 'Office Supplies' 2 100.00
'2019-03-05' 'London' 'Furniture' 1 750.00
'2019-03-02' 'Moscow' 'Furniture' 2 1250.50
'2019-03-03' 'Moscow' 'Office Supplies' 4 85.00
'2019-03-01' 'San Francisco' 'Office Supplies' 23 723.00
'2019-03-01' 'San Francisco' 'Furniture' 1 1000.00
'2019-03-03' 'San Francisco' 'Furniture' 4 4000.00
'2019-03-02' 'Detroit' 'Furniture' 5 3700.00
'2019-03-04' 'Detroit' 'Office Supplies' 25 1200.00
'2019-03-04' 'Detroit' 'Furniture' 2 3500.00

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

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

Формулы:

  • City: [City] ;
  • Category: [Category] ;
  • Order Sum: SUM([Orders]) ;
  • LAG TOTAL: LAG(SUM([Orders]) TOTAL) ;
  • LAG WITHIN: LAG(SUM([Orders]) WITHIN [City]) ;
  • LAG AMONG: LAG(SUM([Orders]) AMONG [City]) .

Результат

City Category Order Sum LAG TOTAL LAG WITHIN LAG AMONG
'Detroit' 'Furniture' 7 NULL NULL NULL
'Detroit' 'Office Supplies' 25 7 7 NULL
'London' 'Furniture' 1 25 NULL 7
'London' 'Office Supplies' 10 1 1 25
'Moscow' 'Furniture' 2 10 NULL 1
'Moscow' 'Office Supplies' 4 2 2 10
'San Francisco' 'Furniture' 5 4 NULL 2
'San Francisco' 'Office Supplies' 23 5 5 4
Пример опциональным аргументом

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

Date City Category Orders Profit
'2019-03-01' 'London' 'Office Supplies' 8 120.80
'2019-03-04' 'London' 'Office Supplies' 2 100.00
'2019-03-05' 'London' 'Furniture' 1 750.00
'2019-03-02' 'Moscow' 'Furniture' 2 1250.50
'2019-03-03' 'Moscow' 'Office Supplies' 4 85.00
'2019-03-01' 'San Francisco' 'Office Supplies' 23 723.00
'2019-03-01' 'San Francisco' 'Furniture' 1 1000.00
'2019-03-03' 'San Francisco' 'Furniture' 4 4000.00
'2019-03-02' 'Detroit' 'Furniture' 5 3700.00
'2019-03-04' 'Detroit' 'Office Supplies' 25 1200.00
'2019-03-04' 'Detroit' 'Furniture' 2 3500.00

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

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

Формулы:

  • City: [City] ;
  • Order Sum: SUM([Orders]) ;
  • LAG 1: LAG(SUM([Orders]), 1) ;
  • LAG 2: LAG(SUM([Orders]), -2) .

Результат

City Order Sum LAG 1 LAG 2
'Detroit' 32 NULL 6
'London' 11 32 28
'Moscow' 6 11 NULL
'San Francisco' 28 6 NULL
Пример с ORDER BY

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

Date City Category Orders Profit
'2019-03-01' 'London' 'Office Supplies' 8 120.80
'2019-03-04' 'London' 'Office Supplies' 2 100.00
'2019-03-05' 'London' 'Furniture' 1 750.00
'2019-03-02' 'Moscow' 'Furniture' 2 1250.50
'2019-03-03' 'Moscow' 'Office Supplies' 4 85.00
'2019-03-01' 'San Francisco' 'Office Supplies' 23 723.00
'2019-03-01' 'San Francisco' 'Furniture' 1 1000.00
'2019-03-03' 'San Francisco' 'Furniture' 4 4000.00
'2019-03-02' 'Detroit' 'Furniture' 5 3700.00
'2019-03-04' 'Detroit' 'Office Supplies' 25 1200.00
'2019-03-04' 'Detroit' 'Furniture' 2 3500.00

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

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

Формулы:

  • City: [City] ;
  • Order Sum: SUM([Orders]) ;
  • LAG ORDER BY City: LAG(SUM([Orders]) ORDER BY [City] DESC) ;
  • LAG ORDER BY Order Sum: LAG(SUM([Orders]) ORDER BY [Order Sum]) .

Результат

City Order Sum LAG ORDER BY City LAG ORDER BY Order Sum
'Detroit' 32 11 28
'London' 11 6 6
'Moscow' 6 28 NULL
'San Francisco' 28 NULL 11

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

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

Предыдущая
Следующая