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

quantileExactWeightedInterpolated

数値データ列の各要素の重みを考慮し、線形補間を用いて分位数を計算します。

補間値を求めるために、すべての入力値を配列にまとめ、それぞれに対応する重みに基づいてソートします。次に、重みに基づいて累積分布を構築し、その上で重み付きパーセンタイル法を用いて分位数の補間を行います。このとき、重みと値を用いて線形補間を実行し、分位数を計算します。

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

quantileInterpolatedWeighted よりも quantileExactWeightedInterpolated の使用を強く推奨します。quantileExactWeightedInterpolated の方が quantileInterpolatedWeighted よりも高い精度を持つためです。以下に例を示します。

SELECT
    quantileExactWeightedInterpolated(0.99)(number, 1),
    quantile(0.99)(number),
    quantileInterpolatedWeighted(0.99)(number, 1)
FROM numbers(9)
┌─quantileExactWeightedInterpolated(0.99)(number, 1)─┬─quantile(0.99)(number)─┬─quantileInterpolatedWeighted(0.99)(number, 1)─┐
│                                               7.92 │                   7.92 │                                             8 │
└────────────────────────────────────────────────────┴────────────────────────┴───────────────────────────────────────────────┘

構文

quantileExactWeightedInterpolated(level)(expr, weight)

エイリアス: medianExactWeightedInterpolated.

引数

  • level — 分位数のレベル。省略可能なパラメータ。0 から 1 の間の定数の浮動小数点数値。level の値として [0.01, 0.99] の範囲を使用することを推奨します。デフォルト値: 0.5。level=0.5 の場合、この関数は中央値を計算します。
  • expr — 列の値に対して適用され、結果として数値データ型Date または DateTime を返す式。
  • weight — シーケンス要素の重みを格納する列。重みは、その値の出現回数を表す符号なし整数型の数値です。

戻り値

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

型:

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

入力テーブル:

┌─n─┬─val─┐
│ 0 │   3 │
│ 1 │   2 │
│ 2 │   1 │
│ 5 │   4 │
└───┴─────┘

結果:

┌─quantileExactWeightedInterpolated(n, val)─┐
│                                       1.5 │
└───────────────────────────────────────────┘

関連項目