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

quantiles 関数

quantiles

導入バージョン: v1.1

数値データ列に対して、複数の異なるレベルの近似分位点を同時に計算します。

この関数は、サンプリングのために最大 8192 のリザーバサイズを持つリザーバサンプリングと乱数生成器を用います。 結果は非決定的です。

複数の分位点値が必要な場合、quantiles を使用すると、複数の quantile 関数を個別に呼び出すよりも効率的です。すべての分位点がデータに対する 1 回の走査で計算されるためです。

構文

quantiles(level1, level2, ...)(expr)

パラメータ

  • level — 分位数のレベル。0 から 1 までの 1 つ以上の定数浮動小数点数値。level の値としては [0.01, 0.99] の範囲を使用することを推奨します。Float*

引数

  • expr — 数値データ型、Date または DateTime を返すカラム値に対する式。(U)Int* または Float* または Decimal* または Date または DateTime

戻り値

指定されたレベルに対する近似分位数の配列。レベルが指定された順序と同じ順序で返されます。Array(Float64) または Array(Date) または Array(DateTime)

複数の分位数を効率的に計算する

CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

SELECT quantiles(0.25, 0.5, 0.75, 0.9)(val) FROM t;
┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [3, 5.5, 8, 9.5]                     │
└──────────────────────────────────────┘