跳至主要内容

maxIntersections

计算一组区间彼此之间最大重叠次数的聚合函数(如果所有区间至少重叠一次)。

语法如下

maxIntersections(start_column, end_column)

参数

  • start_column – 表示每个区间起点的数字列。如果 start_columnNULL 或 0,则跳过该区间。

  • end_column - 表示每个区间终点的数字列。如果 end_columnNULL 或 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 函数来查找这些出现次数和位置。