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

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, чтобы определить их количество и местоположение.