Перейти к основному содержанию
Перейти к основному содержанию

leadInFrame

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

Примечание

Поведение leadInFrame отличается от стандартной оконной функции SQL lead. Оконная функция ClickHouse leadInFrame учитывает рамку окна. Чтобы получить поведение, идентичное lead, используйте ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

Синтаксис

leadInFrame(x[, offset[, default]])
  OVER ([[PARTITION BY столбец_группировки] [ORDER BY столбец_сортировки]
        [ROWS или RANGE выражение_ограничения_строк_в_группе]] | [имя_окна])
FROM имя_таблицы
WINDOW имя_окна AS ([[PARTITION BY столбец_группировки] [ORDER BY столбец_сортировки])

Для более подробной информации о синтаксисе оконных функций см. раздел Window Functions - Syntax.

Параметры

  • x — имя столбца.
  • offset — смещение, которое нужно применить. (U)Int*. (Необязательный параметр — по умолчанию 1).
  • default — значение, возвращаемое, если рассчитанная строка выходит за границы оконного фрейма. (Необязательный параметр — при отсутствии используется значение по умолчанию для типа столбца).

Возвращаемое значение

  • значение, вычисленное для строки, которая расположена на offset строк после текущей строки внутри упорядоченного фрейма.

Пример

В этом примере используется исторический набор данных по лауреатам Нобелевской премии и функция leadInFrame для вывода списка последовательных лауреатов в категории «Физика».

Запрос:

CREATE OR REPLACE VIEW nobel_prize_laureates
AS SELECT *
FROM file('nobel_laureates_data.csv');
SELECT
    fullName,
    leadInFrame(year, 1, year) OVER (PARTITION BY category ORDER BY year ASC
      ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
    ) AS year,
    category,
    motivation
FROM nobel_prize_laureates
WHERE category = 'physics'
ORDER BY year DESC
LIMIT 9

Результат:

   ┌─fullName─────────┬─year─┬─category─┬─motivation─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
1. │ Anne L Huillier  │ 2023 │ физика  │ за экспериментальные методы, позволяющие получать аттосекундные световые импульсы для изучения динамики электронов в веществе                     │
2. │ Pierre Agostini  │ 2023 │ физика  │ за экспериментальные методы, позволяющие получать аттосекундные световые импульсы для изучения динамики электронов в веществе                     │
3. │ Ferenc Krausz    │ 2023 │ физика  │ за экспериментальные методы, позволяющие получать аттосекундные световые импульсы для изучения динамики электронов в веществе                     │
4. │ Alain Aspect     │ 2022 │ физика  │ за эксперименты с запутанными фотонами, подтвердившие нарушение неравенств Белла и заложившие основы науки о квантовой информации │
5. │ Anton Zeilinger  │ 2022 │ физика  │ за эксперименты с запутанными фотонами, подтвердившие нарушение неравенств Белла и заложившие основы науки о квантовой информации │
6. │ John Clauser     │ 2022 │ физика  │ за эксперименты с запутанными фотонами, подтвердившие нарушение неравенств Белла и заложившие основы науки о квантовой информации │
7. │ Giorgio Parisi   │ 2021 │ физика  │ за открытие взаимосвязи беспорядка и флуктуаций в физических системах от атомных до планетарных масштабов                │
8. │ Klaus Hasselmann │ 2021 │ физика  │ за физическое моделирование климата Земли, количественную оценку его изменчивости и надежное прогнозирование глобального потепления                        │
9. │ Syukuro Manabe   │ 2021 │ физика  │ за физическое моделирование климата Земли, количественную оценку его изменчивости и надежное прогнозирование глобального потепления                        │
   └──────────────────┴──────┴──────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘