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

quantileExactLow

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

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

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

その他のレベルについては、level * size_of_array の値に対応するインデックスの要素が返されます。例:

SELECT quantileExactLow(0.1)(number) FROM numbers(10)

┌─quantileExactLow(0.1)(number)─┐
│                             1 │
└───────────────────────────────┘

quantile* 関数を同じクエリ内で異なるレベルで複数使用する場合、内部状態はまとめて処理されません(そのため、クエリの効率は本来よりも低くなります)。このような場合は、quantiles 関数を使用してください。

構文

quantileExactLow(level)(expr)

別名: medianExactLow.

引数

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

返される値

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

型:

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

クエリ:

SELECT quantileExactLow(number) FROM numbers(10)

結果:

┌─quantileExactLow(number)─┐
│                        4 │
└──────────────────────────┘