Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Database
  • Начало работы
    • Обзор
    • Создание базы данных
    • Примеры YQL-запросов
    • Примеры работы с YDB CLI
    • Запуск тестового приложения
    • Использование AWS CLI и AWS SDK
    • Document API
    • Разработка на NodeJS с Document API
  • Пошаговые инструкции
    • Управление базами данных
    • Подключение к базе данных
    • Управление таблицами
    • Чтение и запись данных
    • Работа со вторичными индексами
  • Работа с SDK
  • Концепции
    • Обзор
    • Модель данных и схема
    • Режимы работы Serverless и Dedicated
    • Типы данных
    • Транзакции
    • Вторичные индексы
    • Time to Live (TTL)
    • Термины и определения
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
    • Обзор
    • Бессерверный режим
    • Режим с выделенными инстансами
  • Рекомендации
    • Проектирование схемы
    • Партицирование таблиц
    • Вторичные индексы
    • Постраничный вывод
    • Загрузка больших объемов данных
    • Использование таймаутов
  • YDB API и справочник
    • Ограничения базы данных
    • Обработка ошибок в API
  • HTTP API, совместимый с Amazon DynamoDB
    • Справочник API
      • Все методы
      • Actions
        • BatchGetItem
        • BatchWriteItem
        • CreateTable
        • DeleteItem
        • DeleteTable
        • DescribeTable
        • GetItem
        • ListTables
        • PutItem
        • Query
        • Scan
        • TransactGetItems
        • TransactWriteItems
        • UpdateItem
      • Общие ошибки
  • Справочник YQL
    • Обзор
    • Типы данных
      • Простые
      • Опциональные
      • Контейнеры
      • Специальные
    • Синтаксис
      • Неподдерживаемые конструкции
      • Работа с текстовым представлением типов данных
      • Выражения
      • CREATE TABLE
      • DROP TABLE
      • INSERT INTO
      • UPSERT INTO
      • REPLACE INTO
      • UPDATE
      • DELETE
      • SELECT
      • GROUP BY
      • JOIN
      • FLATTEN
      • ACTION
      • DISCARD
      • PRAGMA
      • DECLARE
      • OVER, PARTITION BY и WINDOW
    • Встроенные функции
      • Базовые
      • Агрегатные
      • Оконные
      • Для работы со списками
      • Для работы со словарями
      • Для работы с JSON
      • Для работы со структурами
      • Для работы с типами
    • Предустановленные пользовательские функции
      • HyperScan
      • Pcre
      • Pire
      • Re2
      • String
      • Unicode
      • Datetime
      • Url
      • Ip
      • Digest
      • Math
      • Histogram
    • Работа с текстовым представлением типов данных
  • Туториал YQL
    • Обзор
    • Создание таблицы
    • Добавление данных в таблицу
    • Выборка данных из всех колонок
    • Выборка данных из определенных колонок
    • Сортировка и фильтрация
    • Агрегирование данных
    • Дополнительные условия выборки
    • Объединение таблиц с помощью JOIN
    • Вставка и модификация данных с помощью REPLACE
    • Вставка и модификация данных с помощью UPSERT
    • Вставка данных с помощью INSERT
    • Обновление данных с помощью UPDATE
    • Удаление данных
    • Добавление и удаление колонок
    • Удаление таблицы
  • Обслуживание
    • Резервное копирование
  • Диагностика
    • Системные таблицы
  • Вопросы и ответы
    • Общие вопросы
    • Ошибки
    • YQL
    • Все вопросы на одной странице
  • Публичные материалы
  1. Справочник YQL
  2. Встроенные функции
  3. Оконные

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

  • Агрегатные функции
  • ROW_NUMBER
  • LAG / LEAD
  • FIRST_VALUE / LAST_VALUE
  • RANK / DENSE_RANK

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

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

Примеры

SELECT
    SUM(int_column) OVER w AS running_total
FROM my_table
WINDOW w AS ();

ROW_NUMBER

Номер строки в рамках партиции. Без аргументов.

Примеры

SELECT
    ROW_NUMBER() OVER w AS row_num
FROM my_table
WINDOW w AS ();

LAG / LEAD

Доступ к значению из строки, отстающей (LAG) или опережающей (LEAD) текущую на фиксированное число. В первом аргументе указывается выражение, к которому необходим доступ, а во втором — отступ в строках. Отступ можно не указывать, по умолчанию используется соседняя строка — предыдущая или следующая, соответственно, то есть подразумевается 1. В строках, для которых нет соседей с заданным расстоянием (например LAG(expr, 3) в первой и второй строках окна) значение выражения — NULL.

Примеры

SELECT
   int_value - LAG(int_value) OVER w AS int_value_diff
FROM my_table
WINDOW w AS ();

FIRST_VALUE / LAST_VALUE

Доступ к значениям из первой и последней строк окна. Единственный аргумент — выражение, к которому необходим доступ.

Опционально перед OVER может указываться дополнительный модификатор IGNORE NULLS, который меняет поведение функций на первое или последнее не пустое (то есть не NULL) значение среди строк окна. Антоним этого модификатора — RESPECT NULLS является поведением по умолчанию и может не указываться.

Примеры

SELECT
   LAST_VALUE(my_column) IGNORE NULLS OVER w
FROM my_table
WINDOW w AS ();

RANK / DENSE_RANK

Пронумеровать группы соседних строк с одинаковыми значением выражения в аргументе. DENSE_RANK нумерует группы подряд, а RANK — пропускает (N - 1) значений, где N — число строк в предыдущей группе.

При отсутствии аргумента использует порядок, указанный в секции ORDER BY.

Примеры

SELECT
   RANK(my_column) OVER w
FROM my_table
WINDOW w AS ();
SELECT
   RANK() OVER w
FROM my_table
WINDOW w AS (ORDER BY my_column);
В этой статье:
  • Агрегатные функции
  • ROW_NUMBER
  • LAG / LEAD
  • FIRST_VALUE / LAST_VALUE
  • RANK / DENSE_RANK
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»