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

quantileExactWeightedInterpolated

quantileExactWeightedInterpolated

導入バージョン: v24.10

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

補間された値を取得するために、渡されたすべての値を配列にまとめてから、それらに対応する重みに基づいてソートします。次に、重みに基づいて累積分布を構築し、weighted percentile method を用いて分位数の補間を行います。この際、重みと値を使って線形補間を実行し、分位数を計算します。

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

quantileInterpolatedWeighted よりも quantileExactWeightedInterpolated の使用を強く推奨します。quantileExactWeightedInterpolated の方が quantileInterpolatedWeighted よりも精度が高いためです。 詳細については以下の例を参照してください。

構文

quantileExactWeightedInterpolated(level)(expr, weight)

別名: medianExactWeightedInterpolated

パラメータ

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

引数

  • expr — カラム値に対する式で、結果が数値データ型、Date または DateTime になります。(U)Int* または Float* または Decimal* または Date または DateTime
  • weight — シーケンス要素の重みを持つカラム。重みは値の出現回数です。UInt*

返される値

指定されたレベルの分位数。Float64 または Date または DateTime

厳密な重み付き補間分位数の計算

SELECT quantileExactWeightedInterpolated(n, val) FROM t;
┌─quantileExactWeightedInterpolated(n, val)─┐
│                                       1.5 │
└───────────────────────────────────────────┘

quantileInterpolatedWeighted よりも quantileExactWeightedInterpolated を優先して使用する

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 │
└────────────────────────────────────────────────────┴────────────────────────┴───────────────────────────────────────────────┘

関連項目