跳到主要内容
跳到主要内容

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 函数 来定位这些出现的次数和位置。