Функции агрегации

Обзор

Функции применяются при построении параметра aggr запроса на агрегирующую выборку из коллекции динамического класса.

Сам факт построения агрегирующего запроса обязывает к использованию хотя бы одной агрегирующей функции.

Порядок построения фильтра

В качестве значения параметра aggr при построении агрегирующего запроса указывается объект, ключами которого являются возвращаемые поля, каждое из которых содержит агрегирующее значение. В качестве значения этих ключей необходимо указать список, первым элементом которого является одна из агрегирующих функций, а другими элементами - параметры этой функции.

Например:
["count",1]

["sum",["property","pint"]]

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

Например:
["sum",["%",["-",["property","pint"],1],10]]

В общем случае значение параметра aggr может выглядеть так:

.

{
  "x": ["sum",["//",["-",["property","pint"],1],10]],
  "any": ["or",["property","pbool"]]
}

Список поддерживаемых функций

Все функции применяются к значениям в группе с одинаковой базой.

  • count/1 - подсчет количества элементов в группе. Параметр - произвольное значение.

  • sum/1 - суммирование числового значения. Параметр - как правило функция ["property",FIELDNAME]. В ряде случаев может оказаться полезным генерация по условию 0 или 1.

  • min/1 - вычисление минимального значения.

  • max/1 - вычисление максимального значения.

  • avg/1 - вычисление среднего значения. Для построения взвешенной суммы в качестве параметра можно передавать функцию от значения, например умножение на весовой коэффициент, который также вычисляется как функция.

  • and/1 - булевое перемножение значений.

  • or/1 - булевое сложение значений.

  • join/2 - зацепление строк через разделитель. Первый аргумент - разделитель (выражен как константа или функция), второй элемент - значение (выражен произвольной функцией).