Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantileExactExclusive

quantileExactExclusive

導入バージョン: v20.1.0

quantileExact と同様に、この関数は数値データの数列の正確な 分位数 を計算します。

この関数は quantileExact と同等ですが、分位数の計算には R-6 method で説明されている exclusive 法を使用します。

この関数を使用すると、指定した分位数 p に対する補間式は x[floor(n*p)] + (n*p - floor(n*p)) * (x[floor(n*p)+1] - x[floor(n*p)]) の形になります。ここで、x はソート済みの配列です。

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

1 つのクエリで異なる levels を持つ複数の quantile* 関数を使用する場合、内部状態は結合されません (つまり、クエリの実行効率は本来より低くなります) 。 この場合は、quantiles 関数を使用してください。

構文

quantileExactExclusive(level)(expr)

パラメーター

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

引数

  • expr — カラムの値に対する式。結果は数値データ型、Date、または DateTime である必要があります。(U)Int* または Float* または Date または DateTime

戻り値

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

厳密な exclusive 分位数の計算

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.10000000000000009 │                                 8.9 │
└─────────────────────────────────────┴─────────────────────────────────────┘
Navigation