Предложение рамки окна
Область применения: 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
Указывает, что концом оконной рамки считается конец секции.