メインコンテンツへスキップ
メインコンテンツへスキップ

maxIntersections

すべての区間同士が少なくとも 1 回は交差する場合に、その区間群における区間同士の交差回数の最大値を計算する集約関数です。

構文は次のとおりです。

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

これらの区間のうち 3 つが共通の値を含みます(その値は 4 ですが、どの値が共通かは重要ではなく、ここでは交差している区間の個数を測定しています)。区間 (1,3)(3,7) は端点を共有していますが、maxIntersections 関数では交差しているとは見なされません。

SELECT maxIntersections(start, end) FROM my_events;

レスポンス:

3

最大区間が複数回現れる場合は、それらの個数と位置を特定するために、maxIntersectionsPosition 関数を使用できます。