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

quantileExactWeighted

quantileExactWeighted

導入バージョン: v1.1

数値データ列の分位数を、各要素の重みを考慮して正確に計算します。

正確な値を取得するために、渡されたすべての値は配列にまとめられ、その後部分的にソートされます。 各値は、その値が weight 回存在するかのように、その重みを用いてカウントされます。 アルゴリズムではハッシュテーブルが使用されます。 このため、渡された値が頻繁に繰り返される場合、この関数は quantileExact よりも少ないRAMを消費します。 この関数を quantileExact の代わりに使用し、重みを 1 に指定できます。

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

構文

quantileExactWeighted(level)(expr, weight)

別名: medianExactWeighted

パラメータ

  • 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 the sample data
INSERT INTO t VALUES
(0, 3),
(1, 2),
(2, 1),
(5, 4);

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

関連項目