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

quantileExactHigh

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

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

戻り値は分位数レベルと集合内の要素数に依存します。例えばレベルが 0.5 の場合、要素数が偶数のときは高い方の中央値を、要素数が奇数のときは中央の要素(中央値)を返します。中央値は、Python で使用されている median_high 実装と同様の方法で計算されます。その他すべてのレベルでは、level * size_of_array の値に対応するインデックスの要素が返されます。

この実装は、現在の quantileExact 実装とまったく同じように動作します。

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

構文

quantileExactHigh(level)(expr)

別名: medianExactHigh.

引数

  • level — 分位数のレベル。省略可能なパラメータ。0 から 1 までの定数の浮動小数点数。level の値として [0.01, 0.99] の範囲を使用することを推奨します。デフォルト値: 0.5。level=0.5 の場合、この関数は中央値を計算します。
  • expr — 数値データ型Date または DateTime を結果とする、カラム値に対する式。

戻り値

  • 指定したレベルの分位数。

型:

  • 数値データ型入力の場合は Float64
  • 入力値が Date 型の場合は Date
  • 入力値が DateTime 型の場合は DateTime

クエリ:

SELECT quantileExactHigh(number) FROM numbers(10)

結果:

┌─quantileExactHigh(number)─┐
│                         5 │
└───────────────────────────┘