Поделиться через


Аналитическая оконная функция lag

Область применения: флажок Databricks SQL флажок Databricks Runtime

Возвращает значение expr из предыдущей строки в секции.

Синтаксис

lag( expr [, offset [, default] ] ) [ IGNORE NULLS | RESPECT NULLS ] OVER clause

Аргументы

  • expr: выражение любого типа.
  • offset: необязательный литерал INTEGER, указывающий смещение.
  • default: выражение того же типа, что и expr.
  • IGNORE NULLS или RESPECT NULLS: при IGNORE NULLS указании любого expr значения, которое имеет значение NULL, игнорируется. Значение по умолчанию — RESPECT NULLS.
  • Предложение OVER: предложение, описывающее окно. См. статью "Функции окна".

Возвраты

Тип результата соответствует expr.

Если offset является положительным числом, значение поступает из строки, предшествующей текущей строке и отстоящей от нее на offset, согласно предложению ORDER BY в предложении OVER. Смещение 0 использует значение текущей строки. При отрицательном смещении используется значение из строки, следующей за текущей строкой. Если значение offset не указано, по умолчанию оно принимается равным 1, что соответствует следующей строке.

Если в пределах секции нет строки с указанным смещением, используется указанное значение default. Параметр default по умолчанию равен NULL. Необходимо указать предложение ORDER BY.

Эта функция является синонимом для lead(expr, -offset, default).

Примеры

> SELECT a, b, lag(b) OVER (PARTITION BY a ORDER BY b)
    FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
 A1 1   NULL
 A1 1   1
 A1 2   1
 A2 3   NULL