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

quantilesExactExclusive

quantilesExactExclusive

導入バージョン: v20.1

排他的手法 (exclusive method) を用いて、数値データシーケンスの複数の分位数 を異なるレベルで同時に厳密に計算します。

この関数は quantileExactExclusive と同等ですが、複数の分位レベルを単一パスで計算できるため、個々の分位数関数を別々に呼び出す場合よりも効率的です。

この関数は、R-6 method で説明されている排他的手法を用いて分位数を計算します。 これは Excel の PERCENTILE.EXC 関数と同等です。

正確な値を得るために、渡されたすべての値を配列にまとめ、その後部分的にソートします。 ソートアルゴリズムの計算量は O(N·log(N)) であり、ここで N = std::distance(first, last) 回の比較が行われます。

構文

quantilesExactExclusive(level1, level2, ...)(expr)

パラメータ

  • level — 分位数のレベル。0 以上 1 未満の定数の浮動小数点数。level の値として (0.01, 0.99) の範囲を使用することを推奨します。Float*

引数

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

戻り値

指定された各レベルに対応する分位数を、レベルが指定されたのと同じ順序で格納した配列。Array(Float64)

複数の厳密な排他的分位数を計算する

CREATE TABLE num AS numbers(1000);
SELECT quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number) FROM num;
┌─quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number)─┐
│ [249.25,499.5,749.75,899.9,949.95,989.99,998.999]                        │
└──────────────────────────────────────────────────────────────────────────┘