Оператор PARTITION
Оператор PARTITION
- создание свойства, реализующего разбиение / упорядочивание либо простое распределение.
Синтаксис
Существует два разных вида оператора PARTITION
. Первый из них реализует разбиение / упорядочивание:
PARTITION
type expr
[ORDER [DESC] orderExpr1, ..., orderExprK]
[BY groupExpr1, ..., groupExprM]
Второй реализует простое распределение:
PARTITION
UNGROUP propertyId distributionType expr
[ORDER [DESC] orderExpr1, ..., orderExprK]
[BY groupExpr1, ..., groupExprM]
где distributionType
может быть описан несколькими способами:
PROPORTION [STRICT] ROUND(digits)
LIMIT [STRICT]
Описание
Оператор PARTITION
создает свойство, разбивающее все наборы объектов в системе на группы, и с учетом заданного порядка :
- вычисляет для каждого набора объектов агрегирующую функцию в случае разбиения / упорядочивания
- распределяет некоторое значение среди наборов объектов одной группы в случае распределения.
Блок BY
описывает группы, на которые будет разбиваться множество наборов объектов. Если блок BY
не указывается, то считается, что все наборы объектов входят в одну группу.
Блок ORDER
определяет порядок, в котором будет либо вычисляться агрегирующая функция, либо проходить распределение. Если эта функция некоммутативна, заданный порядок должен быть однозначно определяемым. Если в выражениях, задающих порядок, объявляется новый параметр (не встречавшийся ранее в опциях PARTITION
и BY
и в верхнем контексте), то при вычислении результирующего значения автоматически добавляется условие на не NULL
всех этих выражений.