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


Предложение рамки окна

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

Указывает скользящее подмножество строк в секции, с которой работает агрегатная или аналитическая оконная функция.

Синтаксис

{ frame_mode frame_start |
  frame_mode BETWEEN frame_start AND frame_end } }

frame_mode
{ RANGE | ROWS }

frame_start
{ UNBOUNDED PRECEDING |
  offset_start PRECEDING |
  CURRENT ROW |
  offset_start FOLLOWING }

frame_end
{ offset_stop PRECEDING |
  CURRENT ROW |
  offset_stop FOLLOWING |
  UNBOUNDED FOLLOWING }

Параметры

  • frame_mode

    • СТРОКИ

      Если этот параметр задан, рамка скользящего окна выражается в количестве строк, предшествующих текущей строке или следующих за ней.

    • RANGE

      Если этот параметр задан, оконная функция должна указывать предложение ORDER BY с одним выражением obExpr.

      Таким образом, границы скользящего окна выражаются в виде смещения от obExpr для текущей строки.

  • frame_start

    Начальная позиция рамки скользящего окна относительно текущей строки.

    • UNBOUNDED PRECEDING

      Указывает, что началом рамки окна будет начало секции.

    • offset_start PRECEDING

      Если используется режим ROWS, то offset_start — положительный целочисленный литерал, определяющий количество строк до текущей строки в качестве начала рамки.

      Если используется режим RANGE, то offset_start — положительное литеральное значение такого типа, который допускает вычитание из obExpr. Рамка начинается с первой строки секции, для которой значение obExpr больше или равно obExpr - offset_start в текущей строке.

    • CURRENT ROW

      Указывает, что рамка начинается с текущей строки.

    • offset_start FOLLOWING

      Если используется режим ROWS, то offset_start — положительный целочисленный литерал, определяющий количество строк после текущей строки в качестве начала рамки. Если используется режим RANGE, то offset_start — положительное литеральное значение такого типа, который допускает добавление в obExpr. Рамка начинается с первой строки секции, для которой значение obExpr больше или равно obExpr + offset_start в текущей строке.

  • frame_stop

    Конечная позиция рамки скользящего окна относительно текущей строки.

    Если иное не указано, концом рамки считается текущая строка (CURRENT ROW). Конец скользящего окна должен быть больше, чем начало рамки окна.

    • offset_start PRECEDING

      Если frame_mode имеет значение ROWS, то offset_stop — положительный целочисленный литерал, определяющий количество строк до текущей строки в качестве конца рамки. Если frame_mode имеет значение RANGE, то offset_stop — положительное литеральное значение того же типа, что и offset_start. Концом рамки считается последняя строка секции, для которой значение obExpr меньше или равно obExpr - offset_stop в текущей строке.

    • CURRENT ROW

      Указывает, что рамка заканчивается на текущей строке.

    • offsetStop FOLLOWING

      Если frame_mode имеет значение ROWS, то offset_stop — положительный целочисленный литерал, определяющий количество строк после текущей строки в качестве конца рамки. Если frame_mode имеет значение RANGE, то offset_stop — положительное литеральное значение того же типа, что и offset_start. Концом рамки считается последняя строка секции, для которой значение obExpr меньше или равно obExpr + offset_stop в текущей строке.

    • UNBOUNDED FOLLOWING

      Указывает, что концом оконной рамки считается конец секции.