Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex DataLens
  • Начало работы
  • Практические руководства
    • Все руководства
    • Визуализация данных из CSV-файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД Clickhouse и Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Построение чартов customer journeys на данных AppMetrica
  • Концепции
    • Обзор сервиса
    • Подключение
    • Типы данных
    • Датасет
      • Обзор
      • Модель данных
      • Настройки датасета
    • Чарт
      • Обзор
      • Типы чартов
      • Настройки чарта
    • Дашборд
    • Объединение данных
    • Использование Markdown в DataLens
    • DataLens Public
    • Вычисляемые поля
      • Обзор
      • Синтаксис формул
    • Параметризация
    • Marketplace
    • Резервное копирование
    • Кеширование
    • Квоты и лимиты
    • Организации в DataLens
  • Пошаговые инструкции
    • Все инструкции
    • Работа с подключениями
      • Создание подключения к ClickHouse
      • Создание подключения к файлу CSV
      • Создание подключения к Google Sheets
      • Создание подключения к MySQL
      • Создание подключения к PostgreSQL
      • Создание подключения к MS SQL Server
      • Создание подключения к Oracle Database
      • Создание подключения к YDB
      • Создание подключения к Greenplum
      • Создание подключения к Metrica API
      • Создание подключения к AppMetrica
      • Создание подключения к Yandex Cloud Billing
      • Управление доступом к подключению
    • Работа с датасетами
      • Создание датасета
      • Объединение данных из нескольких таблиц
      • Объединение данных из нескольких CSV-подключений
      • Создание поля данных
      • Создание вычисляемого поля данных
      • Создание фильтра по умолчанию для новых чартов
      • Обновление полей в датасете
      • Описание датасета через SQL-запрос к источнику
      • Материализация датасета
      • Управление доступом к датасету
      • Управление доступом к строкам данных
      • Добавление параметра в датасет
    • Работа с чартами
      • Создание линейной диаграммы
      • Создание диаграммы с областями
      • Создание круговой диаграммы
      • Создание кольцевой диаграммы
      • Создание столбчатой диаграммы
      • Создание линейчатой диаграммы
      • Создание точечной диаграммы
      • Создание карты
      • Создание таблицы
      • Создание сводной таблицы
      • Создание индикатора
      • Создание древовидной диаграммы
      • Создание QL-чарта
      • Создание мультидатасетного чарта
      • Добавление иерархии
      • Настройка навигатора
      • Публикация чарта
      • Управление доступом к чарту
      • Добавление guid в качестве параметра
      • Добавление параметра в чарт
    • Работа с дашбордами
      • Создание дашборда
      • Добавление чарта на дашборд
      • Добавление селектора на дашборд
      • Создание алиаса
      • Удаление поля алиаса
      • Публикация дашборда
      • Управление доступом к дашборду
      • Добавление параметров на дашборд
      • Автообновление дашборда
    • Работа с правами доступа
      • Назначение прав доступа
      • Удаление прав доступа
      • Запрос прав доступа
    • Работа с DataLens Marketplace
      • Добавление продукта из Marketplace
      • Удаление продукта из Marketplace
      • Создание и подключение коннектора (для партнеров)
    • Работа с организациями
      • Переключение между экземплярами DataLens
  • Управление доступом
    • Управление доступом к DataLens
    • Управление доступом на уровне строк данных
  • Правила тарификации
  • Справочник функций
    • Все функции
    • Агрегатные функции
      • Обзор
      • ALL_CONCAT
      • ANY
      • ARG_MAX
      • ARG_MIN
      • AVG
      • AVG_IF
      • COUNT
      • COUNTD
      • COUNTD_APPROX
      • COUNTD_IF
      • COUNT_IF
      • MAX
      • MEDIAN
      • MIN
      • QUANTILE
      • QUANTILE_APPROX
      • STDEV
      • STDEVP
      • SUM
      • SUM_IF
      • TOP_CONCAT
      • VAR
      • VARP
    • Географические функции
      • Обзор
      • GEOCODE
      • GEOINFO
      • TOPONYM_TO_GEOPOINT
      • TOPONYM_TO_GEOPOLYGON
    • Логические функции
      • Обзор
      • CASE
      • IF
      • IFNULL
      • ISNULL
      • ZN
    • Математические функции
      • Обзор
      • ABS
      • ACOS
      • ASIN
      • ATAN
      • ATAN2
      • CEILING
      • COS
      • COT
      • DEGREES
      • DIV
      • EXP
      • FLOOR
      • GREATEST
      • LEAST
      • LN
      • LOG
      • LOG10
      • PI
      • POWER
      • RADIANS
      • ROUND
      • SIGN
      • SIN
      • SQRT
      • SQUARE
      • TAN
    • Оконные функции
      • Обзор
      • AVG
      • AVG_IF
      • COUNT
      • COUNT_IF
      • FIRST
      • LAG
      • LAST
      • MAVG
      • MAX
      • MCOUNT
      • MIN
      • MMAX
      • MMIN
      • MSUM
      • RANK
      • RANK_DENSE
      • RANK_PERCENTILE
      • RANK_UNIQUE
      • RAVG
      • RCOUNT
      • RMAX
      • RMIN
      • RSUM
      • SUM
      • SUM_IF
    • Операторы
      • Обзор
      • AND
      • BETWEEN
      • IN
      • IS FALSE
      • IS TRUE
      • LIKE
      • NOT
      • OR
      • Вычитание (-)
      • Деление (/)
      • Остаток (%)
      • Отрицание (-)
      • Сложение и конкатенация (+)
      • Сравнение
      • Степень (^)
      • Умножение (*)
    • Строковые функции
      • Обзор
      • ASCII
      • CHAR
      • CONCAT
      • CONTAINS
      • ENDSWITH
      • FIND
      • ICONTAINS
      • IENDSWITH
      • ISTARTSWITH
      • LEFT
      • LEN
      • LOWER
      • LTRIM
      • REGEXP_EXTRACT
      • REGEXP_EXTRACT_NTH
      • REGEXP_MATCH
      • REGEXP_REPLACE
      • REPLACE
      • RIGHT
      • RTRIM
      • SPACE
      • SPLIT
      • STARTSWITH
      • SUBSTR
      • TRIM
      • UPPER
      • UTF8
    • Функции даты и времени
      • Обзор
      • DATEADD
      • DATEPART
      • DATETRUNC
      • DAY
      • DAYOFWEEK
      • HOUR
      • MINUTE
      • MONTH
      • NOW
      • QUARTER
      • SECOND
      • TODAY
      • WEEK
      • YEAR
    • Функции для работы с временными рядами
      • Обзор
      • AGO
      • AT_DATE
    • Функции для работы с массивами
      • Обзор
      • ARRAY
      • ARR_STR
      • CONTAINS
      • COUNT_ITEM
      • GET_ITEM
      • SLICE
      • STARTSWITH
      • UNNEST
    • Функции преобразования типов
      • Обзор
      • BOOL
      • DATE
      • DATETIME
      • DATETIME_PARSE
      • DATE_PARSE
      • DB_CAST
      • FLOAT
      • GEOPOINT
      • GEOPOLYGON
      • INT
      • STR
    • Функции разметки
      • Обзор
      • BOLD
      • ITALIC
      • MARKUP
      • URL
    • Поддержка функций
  • Туториалы по функциям
    • Агрегатные функции
    • Оконные функции
    • LOD-выражения и управление фильтрацией в агрегатных функциях
  • Публичные материалы
    • Образовательные проекты
    • Вебинары и конференции
    • Статьи и публикации
    • Публичные дашборды и чарты
  • Решение проблем
    • Вопросы и ответы
    • Ошибки DataLens
  1. Справочник функций
  2. Оконные функции
  3. Обзор

Оконные функции

Статья создана
Yandex Cloud
,
улучшена
amatol
  • Ограничения использования
  • Синтаксис
    • Группировка
    • Сортировка
    • BEFORE FILTER BY
  • Агрегатные функции как оконные
  • AVG
  • AVG_IF
  • COUNT
  • COUNT_IF
  • FIRST
  • LAG
  • LAST
  • MAVG
  • MAX
  • MCOUNT
  • MIN
  • MMAX
  • MMIN
  • MSUM
  • RANK
  • RANK_DENSE
  • RANK_PERCENTILE
  • RANK_UNIQUE
  • RAVG
  • RCOUNT
  • RMAX
  • RMIN
  • RSUM
  • SUM
  • SUM_IF

Оконные функции вычисляются аналогично агрегатным, но не объединяют несколько записей в одну, сохраняя их независимость. В некоторых ситуациях это приводит к дублированию значений среди записей в одной группе (например, SUM(... TOTAL)).

Агрегатные функции вычисляются от групп значений, которые формируются с помощью измерений в запросе данных: записи с совпадающими значениями всех измерений попадают в одну группу. Оконные функции также вычисляются от групп значений, которые называются окнами. Для них параметры группировки указываются в вызове функции в виде списка измерений на включение в группировку (WITHIN ...) или же на исключение из нее (AMONG ...).

Ограничения использования

  1. Оконные функции могут иметь в качестве аргументов только показатели или более сложные выражения, зависящие от них.

    Примеры:

    • корректная формула: RANK(MAX([Profit]) TOTAL);
    • некорректная: MAX(RANK([Profit] TOTAL));
    • некорректная: RANK([Profit] TOTAL), где [Profit] — неагрегированное выражение.
  2. В группировке оконных функций могут использоваться только измерения, участвующие в построении чарта.

  3. Ключевое слово AMONG не может быть использовано с измерениями, которые не входят в запрос данных.

    Пример:

    • некорректная формула: RANK(SUM([Profit]) AMONG [City]) с измерениями [Order Date] и [Category].

Синтаксис

Общий синтаксис оконных функций выглядит так:

<WINDOW_FUNCTION_NAME>(
    arg1, arg2, ...

    [ TOTAL
    | WITHIN dim1, dim2, ...
    | AMONG dim1, dim2, ... ]

    [ ORDER BY field1, field2, ... ]

    [ BEFORE FILTER BY filtered_field1, ... ]
)

Как и у обычных функций, вызов начинается с названия функции и аргументов (в данном случае — arg1, arg2, ...).

Группировка

За аргументами следует указание группировки окна, которое может быть одним из трех типов:

  • TOTAL (равносильно WITHIN без измерений): все записи запроса попадают в одно единственное окно.
  • WITHIN dim1, dim2, ... : записи группируются по измерениям dim1, dim2, ...``dim1, dim2, ...
  • AMONG dim1, dim2, ... : записи группируются по всем измерениям из запроса, кроме перечисленных. Например, если использовать формулу RSUM(SUM([Sales]) AMONG dim1, dim2) с измерениями dim1, dim2, dim3, dim4 в запросе данных, то записи будут группироваться по dim3 и dim4, так что эта формула будет эквивалентна RSUM([Sales] WITHIN dim3, dim4).

Группировка опциональна. По умолчанию используется тип группировки TOTAL.

Сортировка

За группировкой следует сортировка (ORDER BY). Она поддерживается только для функций, зависящих от порядка сортировки:

M* R* Позиционные функции
MAVG RAVG LAG
MCOUNT RCOUNT FIRST
MMAX RMAX LAST
MMIN RMIN
MSUM RSUM

Сортировка для этих функций опциональна.

Результат функции зависит от полей и направления сортировки. Чтобы узнать, как сортировка влияет на расчеты, перейдите к описанию функции.
В сортировке допустимо использовать как измерения, так и показатели. Также поддерживается стандартный синтаксис ASC/DESC для указания направления сортировки: по нарастанию или убыванию (по умолчанию используется ASC):
... ORDER BY [Date] ASC, SUM([Sales]) DESC, [Category] ...

Перечисленные в ORDER BY поля дополняются списком полей из сортировки чарта.
Пример:

  • функция — ... ORDER BY [Date] DESC, [City];
  • чарт — сортировка по Date и Category;
  • результат сортировки — Date (по убыванию), City, Category.

BEFORE FILTER BY

Если какие-либо поля перечислены в BEFORE FILTER BY, то эта оконная функция будет рассчитана до фильтрации данных по этим полям.

BEFORE FILTER BY применяется также и ко всем вложенным оконным функциям.
Пример:

  • функция — MAVG(RSUM([Sales] BEFORE FILTER BY [Date]), 10);
  • эквивалент — MAVG(RSUM([Sales] BEFORE FILTER BY [Date]), 10 BEFORE FILTER BY [Date]).

Не используйте конфликтующие BEFORE FILTER BY в запросе:

  • корректная формула: MAVG(RSUM([Sales] BEFORE FILTER BY [Date], [Category]), 10 BEFORE FILTER BY [Date]) — функции вложены друг в друга, и ([Date]) является подмножеством ([Date], [Category]);
  • корректная формула: MAVG(RSUM([Sales] BEFORE FILTER BY [Category]), 10 BEFORE FILTER BY [Date]) — функции вложены друг в друга, поэтому списки полей комбинируются во второй из функций;
  • корректная формула: RSUM([Sales] BEFORE FILTER BY [Date], [Category]) - RSUM([Sales] BEFORE FILTER BY [Date]) — ([Date]) является подмножеством ([Date], [Category]);
  • некорректная формула: RSUM([Sales] BEFORE FILTER BY [Category]) - RSUM([Sales] BEFORE FILTER BY [Date]) — функции не вложены, и ни одно из ([Category]) и ([Date]) не является подмножеством другого.

Агрегатные функции как оконные

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

Агрегации Условные агрегации
SUM SUM_IF
COUNT COUNT_IF
AVG AVG_IF
MAX
MIN

Для использования их оконных вариантов необходимо явно указывать группировку (в отличие от остальных оконных функций, где она опциональна).

Пример:

  • Выражение SUM([Sales]) / SUM(SUM([Sales]) TOTAL) может быть использовано для расчета доли суммы [Sales] по группе к итоговой сумме [Sales] среди всех записей.

AVG

Синтаксис:
AVG( value TOTAL | WITHIN ... | AMONG ... )
или
AVG( value TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

AVG_IF

Синтаксис:
AVG_IF( expression, condition TOTAL | WITHIN ... | AMONG ... )
или
AVG_IF( expression, condition TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

COUNT

Синтаксис:
COUNT( [ value ] TOTAL | WITHIN ... | AMONG ... )
или
COUNT( [ value ] TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

COUNT_IF

Синтаксис:
COUNT_IF( expression, condition TOTAL | WITHIN ... | AMONG ... )
или
COUNT_IF( expression, condition TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

FIRST

Синтаксис:
FIRST( value )
или
FIRST( value [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

Возвращает значение value из первой строки заданного окна. См. также LAST.

LAG

Синтаксис:
LAG( value [ , offset [ , default ] ] )
или
LAG( value [ , offset [ , default ] ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

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

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

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

См. также AGO в качестве неоконной альтернативы.

LAST

Синтаксис:
LAST( value )
или
LAST( value [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

Возвращает значение value из последней строки заданного окна. См. также FIRST.

MAVG

Синтаксис:
MAVG( value, rows_1 [ , rows_2 ] )
или
MAVG( value, rows_1 [ , rows_2 ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

rows_1 rows_2 Окно
положительное - Текущая запись и rows_1 предшествующих.
отрицательное - Текущая запись и -rows_1 последующих.
любой знак любой знак rows_1 предшествующих записей, текущая и rows_2 последующих.

Аналогичное поведение у оконных функций MSUM, MCOUNT, MMIN, MMAX.

См. также AVG, RAVG.

MAX

Синтаксис:
MAX( value TOTAL | WITHIN ... | AMONG ... )
или
MAX( value TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

Если value:

  • число — возвращает наибольшее число;
  • дата — возвращает самую позднюю дату;
  • строка — возвращает последнее значение в алфавитном порядке.

MCOUNT

Синтаксис:
MCOUNT( value, rows_1 [ , rows_2 ] )
или
MCOUNT( value, rows_1 [ , rows_2 ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

rows_1 rows_2 Окно
положительное - Текущая запись и rows_1 предшествующих.
отрицательное - Текущая запись и -rows_1 последующих.
любой знак любой знак rows_1 предшествующих записей, текущая и rows_2 последующих.

Аналогичное поведение у оконных функций MSUM, MMIN, MMAX, MAVG.

См. также COUNT, RCOUNT.

MIN

Синтаксис:
MIN( value TOTAL | WITHIN ... | AMONG ... )
или
MIN( value TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

Если value:

  • число — возвращает наименьшее число;
  • дата — возвращает самую раннюю дату;
  • строка — возвращает первое значение в алфавитном порядке.

MMAX

Синтаксис:
MMAX( value, rows_1 [ , rows_2 ] )
или
MMAX( value, rows_1 [ , rows_2 ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

rows_1 rows_2 Окно
положительное - Текущая запись и rows_1 предшествующих.
отрицательное - Текущая запись и -rows_1 последующих.
любой знак любой знак rows_1 предшествующих записей, текущая и rows_2 последующих.

Аналогичное поведение у оконных функций MSUM, MCOUNT, MMIN, MAVG.

См. также MAX, RMAX.

MMIN

Синтаксис:
MMIN( value, rows_1 [ , rows_2 ] )
или
MMIN( value, rows_1 [ , rows_2 ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

rows_1 rows_2 Окно
положительное - Текущая запись и rows_1 предшествующих.
отрицательное - Текущая запись и -rows_1 последующих.
любой знак любой знак rows_1 предшествующих записей, текущая и rows_2 последующих.

Аналогичное поведение у оконных функций MSUM, MCOUNT, MMAX, MAVG.

См. также MIN, RMIN.

MSUM

Синтаксис:
MSUM( value, rows_1 [ , rows_2 ] )
или
MSUM( value, rows_1 [ , rows_2 ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

rows_1 rows_2 Окно
положительное - Текущая запись и rows_1 предшествующих.
отрицательное - Текущая запись и -rows_1 последующих.
любой знак любой знак rows_1 предшествующих записей, текущая и rows_2 последующих.

Аналогичное поведение у оконных функций MCOUNT, MMIN, MMAX, MAVG.

См. также SUM, RSUM.

RANK

Синтаксис:
RANK( value [ , direction ] )
или
RANK( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ BEFORE FILTER BY ... ] )

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

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

См. также RANK_DENSE, RANK_UNIQUE, RANK_PERCENTILE.

RANK_DENSE

Синтаксис:
RANK_DENSE( value [ , direction ] )
или
RANK_DENSE( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ BEFORE FILTER BY ... ] )

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

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

См. также RANK, RANK_DENSE, RANK_PERCENTILE.

RANK_PERCENTILE

Синтаксис:
RANK_PERCENTILE( value [ , direction ] )
или
RANK_PERCENTILE( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ BEFORE FILTER BY ... ] )

Выполняет относительное ранжирование. Возвращает дробный ранг (от 0 до 1). Расчитывается как (RANK(...) - 1) / (количество строк).

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

См. также RANK, RANK_DENSE, RANK_UNIQUE.

RANK_UNIQUE

Синтаксис:
RANK_UNIQUE( value [ , direction ] )
или
RANK_UNIQUE( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ BEFORE FILTER BY ... ] )

Выполняет уникальное ранжирование. Возвращает порядковый номер строки при сортировке по value. Строки, которые соответствуют одному и тому же значению value, имеют разные значения ранга. Ни для каких двух строк значения не совпадают. Принимает все значения от 1 до значения, которое равно количеству строк.

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

См. также RANK, RANK_DENSE, RANK_PERCENTILE.

RAVG

Синтаксис:
RAVG( value [ , direction ] )
или
RAVG( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

direction Окно
"asc" От первой записи до текущей.
"desc" От текущей записи до последней.

По умолчанию используется значение "asc".

Аналогичное поведение у оконных функций RSUM, RCOUNT, RMIN, RMAX.

См. также AVG, MAVG.

RCOUNT

Синтаксис:
RCOUNT( value [ , direction ] )
или
RCOUNT( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

direction Окно
"asc" От первой записи до текущей.
"desc" От текущей записи до последней.

По умолчанию используется значение "asc".

Аналогичное поведение у оконных функций RSUM, RMIN, RMAX, RAVG.

См. также COUNT, MCOUNT.

RMAX

Синтаксис:
RMAX( value [ , direction ] )
или
RMAX( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

direction Окно
"asc" От первой записи до текущей.
"desc" От текущей записи до последней.

По умолчанию используется значение "asc".

Аналогичное поведение у оконных функций RSUM, RCOUNT, RMIN, RAVG.

См. также MAX, MMAX.

RMIN

Синтаксис:
RMIN( value [ , direction ] )
или
RMIN( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

direction Окно
"asc" От первой записи до текущей.
"desc" От текущей записи до последней.

По умолчанию используется значение "asc".

Аналогичное поведение у оконных функций RSUM, RCOUNT, RMAX, RAVG.

См. также MIN, MMIN.

RSUM

Синтаксис:
RSUM( value [ , direction ] )
или
RSUM( value [ , direction ] [ TOTAL | WITHIN ... | AMONG ... ] [ ORDER BY ... ] [ BEFORE FILTER BY ... ] )

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

direction Окно
"asc" От первой записи до текущей.
"desc" От текущей записи до последней.

По умолчанию используется значение "asc".

Аналогичное поведение у оконных функций RCOUNT, RMIN, RMAX, RAVG.

См. также SUM, MSUM.

SUM

Синтаксис:
SUM( value TOTAL | WITHIN ... | AMONG ... )
или
SUM( value TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

SUM_IF

Синтаксис:
SUM_IF( expression, condition TOTAL | WITHIN ... | AMONG ... )
или
SUM_IF( expression, condition TOTAL | WITHIN ... | AMONG ... [ BEFORE FILTER BY ... ] )

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

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Ограничения использования
  • Синтаксис
  • Группировка
  • Сортировка
  • BEFORE FILTER BY
  • Агрегатные функции как оконные
  • AVG
  • AVG_IF
  • COUNT
  • COUNT_IF
  • FIRST
  • LAG
  • LAST
  • MAVG
  • MAX
  • MCOUNT
  • MIN
  • MMAX
  • MMIN
  • MSUM
  • RANK
  • RANK_DENSE
  • RANK_PERCENTILE
  • RANK_UNIQUE
  • RAVG
  • RCOUNT
  • RMAX
  • RMIN
  • RSUM
  • SUM
  • SUM_IF