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

quantileInterpolatedWeighted

quantileInterpolatedWeighted

導入バージョン: v23.1

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

補間値を得るために、渡されたすべての値を1つの配列にまとめ、対応する重みに基づいてソートします。次に、重みに基づいて累積分布を構築し、その上で重みと値を用いた線形補間を行うことにより分位数を計算する、weighted percentile method による分位数補間が実行されます。

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

構文

quantileInterpolatedWeighted(level)(expr, weight)

エイリアス: medianInterpolatedWeighted

パラメータ

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

引数

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

返される値

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

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

CREATE TABLE t (
    n Int32,
    val Int32
) ENGINE = Memory;

INSERT INTO t VALUES (0, 3), (1, 2), (2, 1), (5, 4);

SELECT quantileInterpolatedWeighted(n, val) FROM t;
┌─quantileInterpolatedWeighted(n, val)─┐
│                                    1 │
└──────────────────────────────────────┘

関連項目