quantileExactInclusive
導入バージョン: v20.1.0
quantileExact と同様に、この関数は数値データの数列の正確な 分位点 を計算します。
この関数は quantileExact と同等ですが、R-7法 で説明されている包含方式で分位点を計算します。
この関数を使用すると、指定した分位点 p に対する補間式が x[floor((n-1)*p)] + ((n-1)*p - floor((n-1)*p)) * (x[floor((n-1)*p)+1] - x[floor((n-1)*p)]) の形になるように分位点が計算されます。ここで、x はソート済みの配列です。
正確な値を得るために、渡されたすべての値はいったん 1 つの配列にまとめられ、その後完全にソートされます。
ソートアルゴリズムの計算量は O(N·log(N)) で、ここで N = std::distance(first, last) は比較回数です。
クエリ内で異なるレベルの複数の quantile* 関数を使用する場合、内部状態は結合されません (つまり、クエリは本来よりも効率が低くなります) 。
この場合は、quantiles 関数を使用してください。
構文
quantileExactInclusive(level)(expr)パラメータ
level— 分位点のレベル。0 から 1 まで (両端を含む) の定数の浮動小数点数です。levelの値には[0.01, 0.99]の範囲を使用することを推奨します。Float*
引数
戻り値
指定したレベルの分位点を返します。Float64
例
厳密な inclusive 分位点の計算
SELECT quantileExactInclusive(0.25)(number) FROM numbers(5);┌─quantileExactInclusive(0.25)(number)─┐
│ 1 │
└──────────────────────────────────────┘複数の分位点レベルの計算
SELECT quantileExactInclusive(0.1)(number), quantileExactInclusive(0.9)(number) FROM numbers(10);┌─quantileExactInclusive(0.1)(number)─┬─quantileExactInclusive(0.9)(number)─┐
│ 0.8999999999999999 │ 8.1 │
└─────────────────────────────────────┴─────────────────────────────────────┘