А.7 Оконные функции

Примечание

Реализована возможность работы только с первым уровнем группировки.

Оконные функции представлены в таблице ниже (Таблица «Оконные функции»).

Таблица 10. Оконные функции

Функция Синтаксис Пример
1 AVG
AVG( value TOTAL | WITHIN. | AMONG. )

                                              

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

AVG(SUM([orders]) TOTAL)

                                              

AVG(SUM([orders]) WITHIN [city])

                                              

2 AVG_IF
AVG_IF(
expression, condition TOTAL | WITHIN.  |  AMONG .
 ) 

                                              

Возвращает среднее для всех значений, которые удовлетворяют условию condition. Если значения отсутствуют, то возвращается NULL. Работает только с числовыми типами данных

AVG_IF(SUM([orders]), SUM([orders]) > 5 WITHIN [city])

                                              

3 COUNT
COUNT(
[ value ] TOTAL | WITHIN. | AMONG .
 )

                                              

Возвращает количество элементов в заданном окне

COUNT(SUM([orders]) TOTAL)

                                              

4 COUNT_IF
COUNT_IF(
expression, condition TOTAL | WITHIN.  |  AMONG .
 ) 

                                              

Возвращает количество элементов в заданном окне, которые удовлетворяют условию expression

COUNT_IF(SUM([orders]), SUM([orders]) > 28 WITHIN [city])

                                              

5 FIRST
FIRST( value )

                                              

Возвращает значение value из первой строки заданного окна. См. также LAST (https://cloud.yandex.ru/docs/datalens/function-ref/LAST)

FIRST(SUM([orders]) TOTAL)

                                              

6 LAG
LAG( value [ , offset [ , default ] ] )

                                              

Возвращает значение value из строки со смещением offset относительно текущей в рамках заданного окна:

  • положительное значение offset делает смещение назад;

  • отрицательное значение offset делает смещение вперед.

По умолчанию offset равно 1.

Если значение отсутствует (offset ссылается на строку до первой или после последней), то возвращается значение default в качестве результата. Если default не задано, то используется NULL

LAG ( SUM ([orders]) TOTAL

                                              

LAG ( SUM ([orders]),  - 2  TOTAL)

                                              

LAG  ( sum  ([orders]),   1  total   order  by   sum  ([orders]))

                                              

Примечание – В виджете настроена сортировка по агрегату по полю «Заказ»

lag ( sum ([zakaz]), 1  total   order  by   any ([mesac__cislo]))

                                              

7 LAST
LAST( value )

                                              

Возвращает значение value из последней строки заданного окна. См. также FIRST (https://cloud.yandex.ru/docs/datalens/function-ref/FIRST)

LAST(SUM([orders])TOTAL)

                                              

8 MAVG
MAVG( value, rows_1 [, rows_2 ] )

                                              

Возвращает скользящее среднее значение по окну записей. Значение определяется порядком сортировки и аргументами:

MAVG(SUM([orders]), 1 TOTAL)

                                              

MAVG(SUM([orders]), -2 TOTAL)

                                              

MAVG(SUM([orders]), 1, 1 TOTAL)

                                              

rows_1

rowa_2

Окно
Положительное - Текущая запись и rows_1 предшествующих
Отрицательное - Текущая запись и -rows_1 последующих
Любой знак Любой знак rows_1 предшествующих записей, текущая и rows_2 последующих
9 MAX
MAX( value
 TOTAL | WITHIN. | AMONG .
 )

                                              

Возвращает максимальное значение.

Если value:

  • число – возвращает наибольшее число;

  • дата – возвращает самую позднюю дату;

  • строка – возвращает последнее значение в алфавитном порядке

MAX(SUM([orders]) TOTAL)

                                              

10 MAX_IF
MAX_IF( expression, condition
 TOTAL | WITHIN.
         |  AMONG .
 )

                                              

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

MAX_IF(SUM([orders]), AVG([orders]) <8 TOTAL [city])

                                              

11 MCOUNT
MCOUNT( value, rows_1 [, rows_2 ] )

                                              

Возвращает количество значений (не равных NULL) по окну записей, которое определяется порядком сортировки и аргументами:

MCOUNT(SUM([orders]), 1 TOTAL)

                                              

MCOUNT(SUM([orders]), -2 TOTAL)

                                              

MCOUNT(SUM([orders]), 1, 1 TOTAL)

                                              

rows_1 rowa_2 Окно
Положительное - Текущая запись и rows_1 предшествующих
Отрицательное - Текущая запись и -rows_1 последующих
Любой знак Любой знак rows_1 предшествующих записей, текущая и rows_2 последующих
12 MIN
MIN( value
 TOTAL | WITHIN. | AMONG .
 )

                                              

Возвращает минимальное значение.

Если value:

  • число – возвращает наименьшее число;

  • дата – возвращает самую раннюю дату;

  • строка – возвращает первое значение в алфавитном порядке

MIN(SUM([orders]) TOTAL)

                                              

13 MIN_IF
MIN_IF( expression, condition
 TOTAL | WITHIN. |  AMONG .
 )

                                              

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

MIN_IF(SUM([orders]), AVG([orders]) <8 TOTAL [city])

                                              

14 MMAX
MMAX( value, rows_1 [, rows_2 ] )

                                              

Возвращает скользящий максимум значений по окну записей. Значение определяется порядком сортировки и аргументами:

MMAX(SUM([orders]), 1 TOTAL)

                                              

MMAX(SUM([orders]), 1, 1 TOTAL)

                                              

rows_1 rowa_2 Окно
Положительное - Текущая запись и rows_1 предшествующих
Отрицательное - Текущая запись и -rows_1 последующих
Любой знак Любой знак rows_1 предшествующих записей, текущая и rows_2 последующих
15 MMIN
MMIN( value, rows_1 [, rows_2 ] )

                                              

Возвращает скользящий минимум значений по окну записей, определяемому порядком сортировки и аргументами:

MMIN(SUM([orders]), 1 TOTAL)

                                              

MMIN(SUM([orders]), 1, 1 TOTAL)

                                              

rows_1 rowa_2 Окно
Положительное - Текущая запись и rows_1 предшествующих
Отрицательное - Текущая запись и -rows_1 последующих
Любой знак Любой знак rows_1 предшествующих записей, текущая и rows_2 последующих
16 MSUM
MSUM( value, rows_1 [, rows_2 ] )

                                              

Возвращает скользящую сумму значений по окну записей, которое определяется порядком сортировки и аргументами:

MSUM(SUM([orders]), 1 TOTAL)

                                              

MSUM(SUM([orders]), 1, 1 TOTAL)

                                              

rows_1 rowa_2 Окно
Положительное - Текущая запись и rows_1 предшествующих
Отрицательное - Текущая запись и -rows_1 последующих
Любой знак Любой знак rows_1 предшествующих записей, текущая и rows_2 последующих
17 RANK
RANK( value [, direction ] )

                                              

Выполняет ранжирование значений с пропусками: возвращает порядковый номер строки при сортировке по value. Строки, которые соответствуют одному и тому же значению value, имеют одно и то же значение ранга. Если первые две строки получают ранг 1, то ранг следующей строки (если значение value не совпадает) будет равен 3. Значение 2 в этом случае пропускается.

Если direction равно "desc" или не указано, то ранжирование происходит от большего к меньшему, если "asc", то от меньшего к большему. По умолчанию используется "desc"

RANK(SUM([orders]), DESC TOTAL)

                                              

RANK(count([orders]), DESC TOTAL)

                                              

18 RANK_DENSE
RANK_DENSE( value [, direction ] )

                                              

Выполняет ранжирование значений без пропусков: возвращает порядковый номер строки при сортировке по value. Строки, которые соответствуют одному и тому же значению value, имеют одно и то же значение ранга. Если первые две строки получают ранг 1, то ранг следующей строки (если значение value не совпадает) будет равен 2. Значения ранга не пропускаются.

Если direction равно "desc" или не указано, то ранжирование происходит от большего к меньшему, если "asc", то от меньшего к большему. По умолчанию используется "desc"

RANK_DENSE(count([orders]), DESC TOTAL)

                                              

19 RAVG
RAVG( value [, direction ] )

                                              

Возвращает среднее арифметическое значений в рамках окна записей, определяемого аргументом direction:

RAVG(SUM([orders]), ASC TOTAL ORDER BY [city] DESC)

                                              

direction Окно
"asc" От первой записи до текущей
"desc" От текущей записи до последней
По умолчанию используется значение "asc"
20 RCOUNT
RCOUNT( value [, direction ] )

                                              

Возвращает количество значений в рамках окна записей, определяемого порядком сортировки и значением аргумента direction:

RCOUNT(SUM([orders]) TOTAL ORDER BY [city] DESC)

                                              

RCOUNT(SUM([orders]) TOTAL)

                                              

direction Окно
"asc" От первой записи до текущей
"desc" От текущей записи до последней
По умолчанию используется значение "asc"
21 RMAX
RMAX( value [, direction ] )

                                              

Возвращает максимальное из значений в рамках окна записей, определяемого порядком сортировки и значением аргумента direction:

RMAX(SUM([orders]) TOTAL ORDER BY [city] desc)

                                              

direction Окно
"asc" От первой записи до текущей
"desc" От текущей записи до последней
По умолчанию используется значение "asc"
22 RMIN
MMIN( value, rows_1 [, rows_2 ] )

                                              

Возвращает скользящий минимум значений по окну записей, определяемому порядком сортировки и аргументами:

RMIN(SUM([orders]) TOTAL ORDER BY [city] DESC)

                                              

direction Окно
"asc" От первой записи до текущей
"desc" От текущей записи до последней
По умолчанию используется значение "asc"
23 RSUM
RSUM( value [, direction ] )

                                              

Возвращает сумму значений в рамках окна записей, определяемого порядком сортировки и значением аргумента direction:

RSUM(SUM([orders]), ASC TOTAL ORDER BY [city] DESC)

                                              

direction Окно
"asc" От первой записи до текущей
"desc" От текущей записи до последней
По умолчанию используется значение "asc"
24 SUM
SUM( value
 TOTAL | WITHIN. | AMONG .
 )

                                              

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

Типы аргументов:

  • value – Дробное число | Целое число

SUM(SUM([orders]) TOTAL)

                                              

25 SUM_IF
SUM_IF( expression, condition
 TOTAL | WITHIN. |  AMONG .
 )

                                              

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

Типы аргументов:

  • expression – Дробное число | Целое число;

  • condition – Логический

SUM_IF(SUM([orders]), AVG([orders]) <8 TOTAL [city])