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


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

Область применения:установлен флажок 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

    • СТРОКИ

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

    • Диапазон

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

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

  • frame_start

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

    • НЕОГРАНИЧЕННОЕ ПРЕДШЕСТВИЕ

      Указывает, что кадр окна начинается с начала раздела.

    • offset_start PRECEDING

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

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

    • ТЕКУЩАЯ СТРОКА

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

    • смещение_начало СЛЕДУЮЩИЙ

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

  • frame_stop

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

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

    • начало_смещения ПРЕДШЕСТВУЮЩЕЕ

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

    • ТЕКУЩАЯ СТРОКА

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

    • остановка смещения следующий

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

    • НЕОГРАНИЧЕННОЕ СЛЕДОВАНИЕ

      Указывает, что рамка окна заканчивается у края перегородки.