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

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 函数 来确定它们的数量和位置。