分位点
導入バージョン: v1.1.0
数値データ列に対して、異なるレベルの複数の近似分位点を同時に計算します。
この関数では、最大 8192 のリザーバサイズを持つリザーバサンプリングと、サンプリング用の乱数生成器を使用します。 結果は非決定論的です。
複数の分位点の値が必要な場合、quantiles を使用する方が、個別の quantile 関数を複数回呼び出すよりも効率的です。これは、すべての分位点をデータ全体に対する 1 回の走査で計算できるためです。
構文
quantiles(level1, level2, ...)(expr)Parameters
level— 分位点のレベルです。0 から 1 までの定数の浮動小数点数を 1 つ以上指定します。levelの値には[0.01, 0.99]の範囲を使用することを推奨します。Float*
Arguments
expr— カラムの値に対する式で、結果は数値型、Date、DateTime、またはDateTime64である必要があります。(U)Int*またはInt128またはUInt128またはInt256またはUInt256またはFloat*またはDecimal*またはDateまたはDateTimeまたはDateTime64
戻り値
指定したレベルの近似分位点を、指定したレベルと同じ順序で格納した Array を返します。数値型の引数は Float64 を生成し、Decimal、Date、DateTime、および DateTime64 の引数は入力フォーマットを維持します。Array(Float64) または Array(Decimal*) または Array(Date) または Array(DateTime) または Array(DateTime64)
Examples
複数の分位点を効率的に計算する
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)─┐
│ [2.5,5,7.5,9] │
└──────────────────────────────────────┘