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

maxIntersections

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

Синтаксис:

maxIntersections(start_column, end_column)

Аргументы

  • start_column – числовая колонка, представляющая начало каждого интервала. Если start_column равен NULL или 0, то интервал будет пропущен.

  • end_column - числовая колонка, представляющая конец каждого интервала. Если end_column равен NULL или 0, то интервал будет пропущен.

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

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

Пример

CREATE TABLE my_events (
    start UInt32,
    end UInt32
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO my_events VALUES
   (1, 3),
   (1, 6),
   (2, 5),
   (3, 7);

Интервалы выглядят следующим образом:

1 - 3
1 - - - - 6
  2 - - 5
    3 - - - 7

Три из этих интервалов имеют общее значение (значение равно 4, но общее значение не важно, мы измеряем количество пересечений). Интервалы (1,3) и (3,7) имеют общую границу, но не считаются пересекающимися по функции maxIntersections.

SELECT maxIntersections(start, end) FROM my_events;

Ответ:

3

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