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

quantileExactExclusive

quantileExactExclusive

導入バージョン: v20.1

quantileExact と同様に、数値データ列の厳密な 分位数 を計算します。

この関数は quantileExact と等価ですが、R-6 method で説明されているように、分位数を計算するために「排他的」方式を使用します。

この関数を使用する場合、分位数は、与えられた分位数 p に対する補間式が x[floor(n*p)] + (n*p - floor(n*p)) * (x[floor(n*p)+1] - x[floor(n*p)]) の形になるように計算されます。ここで x はソート済み配列です。

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

クエリ内で異なるレベルを持つ複数の quantile* 関数を使用する場合、内部状態は結合されません(つまり、クエリは本来よりも非効率に動作します)。 このような場合は、quantiles 関数を使用してください。

構文

quantileExactExclusive(level)(expr)

パラメータ

  • level — 分位数のレベル。0 以上 1 未満の定数の浮動小数点数。level の値には (0.01, 0.99) の範囲を使用することを推奨します。Float*

引数

  • expr — カラム値に適用され、その結果が数値データ型、Date または DateTime となる式。(U)Int* または Float* または Decimal* または Date または DateTime

戻り値

指定されたレベルの分位数を返します。Float64

厳密な排他的分位数の算出

SELECT quantileExactExclusive(0.25)(number) FROM numbers(5);
┌─quantileExactExclusive(0.25)(number)─┐
│                                  0.5 │
└──────────────────────────────────────┘

複数の分位点の計算

SELECT quantileExactExclusive(0.1)(number), quantileExactExclusive(0.9)(number) FROM numbers(10);
┌─quantileExactExclusive(0.1)(number)─┬─quantileExactExclusive(0.9)(number)─┐
│                                 0.4 │                                 8.6 │
└─────────────────────────────────────┴─────────────────────────────────────┘