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

quantileExactHigh

quantileExactHigh

導入バージョン: v20.8

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

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

戻り値は分位数レベルと選択内の要素数に依存します。例えばレベルが 0.5 の場合、要素数が偶数であれば大きい方の中央値を、奇数であれば中央の値を返します。 中央値は、Python で使用されている median_high 実装と同様の方法で計算されます。

それ以外のレベルでは、level * size_of_array の値に対応するインデックス位置の要素が返されます。

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

構文

quantileExactHigh(level)(expr)

別名: medianExactHigh

パラメータ

  • level — 省略可能。分位数のレベル。0 から 1 までの定数の浮動小数点数値。level の値には [0.01, 0.99] の範囲を使用することを推奨します。デフォルト値: 0.5。level=0.5 の場合、この関数は中央値を計算します。Float*

引数

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

戻り値

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

exact high 分位数の計算

SELECT quantileExactHigh(number) FROM numbers(10);
┌─quantileExactHigh(number)─┐
│                         5 │
└───────────────────────────┘

特定の分位の算出

SELECT quantileExactHigh(0.1)(number) FROM numbers(10);
┌─quantileExactHigh(0.1)(number)─┐
│                              1 │
└────────────────────────────────┘