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

quantilesExactInclusive

quantilesExactInclusive

導入バージョン: v20.1

数値データ系列に対して、インクルーシブ方式を用いて複数の異なるレベルの分位数を同時に厳密に計算します。

この関数は quantileExactInclusive と同等ですが、複数の分位数レベルを 1 回の処理で計算できるため、個々の分位数関数をそれぞれ呼び出すよりも効率的です。

この関数は、R-7 method で説明されているように、分位数の計算にインクルーシブ方式を使用します。 これは Excel の関数 PERCENTILE.INC と同等です。

厳密な値を得るために、渡されたすべての値を 1 つの配列にまとめ、その配列を部分的にソートします。 ソートアルゴリズムの計算量は O(N·log(N)) であり、ここで N = std::distance(first, last) は比較回数です。

構文

quantilesExactInclusive(level1, level2, ...)(expr)

パラメータ

  • level — 分位数のレベル。0 から 1(両端を含む)までの定数浮動小数点数。level の値として [0.01, 0.99] の範囲を使用することを推奨します。Float*

引数

  • expr — 数値データ型、Date または DateTime を返すカラム値に対する式。(U)Int* または Float* または Decimal* または Date または DateTime

返される値

指定された各レベルに対応する分位数を、レベルの指定順に並べた配列。Array(Float64)

複数の厳密な包含型 (inclusive) 分位数の計算

CREATE TABLE num AS numbers(1000);
SELECT quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number) FROM num;
┌─quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number)─┐
│ [249.75,499.5,749.25,899.1,949.05,989.01,998.001]                        │
└──────────────────────────────────────────────────────────────────────────┘