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

quantileExactWeighted

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

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

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

構文

quantileExactWeighted(level)(expr, weight)

Alias: medianExactWeighted.

引数

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

戻り値

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

型:

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

入力テーブル:

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

クエリ:

SELECT quantileExactWeighted(n, val) FROM t

結果:

┌─quantileExactWeighted(n, val)─┐
│                             1 │
└───────────────────────────────┘

関連項目