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

quantileExactInclusive

quantileExactInclusive

導入バージョン: v20.1

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

この関数は quantileExact と等価ですが、R-7 method で説明されている、分位数を計算するための inclusive method(包括的手法)を使用します。

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

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

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

構文

quantileExactInclusive(level)(expr)

パラメータ

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

引数

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

戻り値

指定されたレベルの分位数を返します。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.9 │                                 8.1 │
└─────────────────────────────────────┴─────────────────────────────────────┘