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*
引数
戻り値
指定したレベルの分位数を返します。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 │
└─────────────────────────────────────┴─────────────────────────────────────┘