quantileExactHigh
導入バージョン: v20.8.0
quantileExact と同様に、数値データの数列に対する正確な 分位数 を計算します。
正確な値を得るため、渡されたすべての値を配列にまとめてから、完全にソートします。
ソートアルゴリズムの計算量は O(N·log(N)) で、ここで N = std::distance(first, last) は比較回数です。
戻り値は 分位数 の level と、選択範囲内の要素数に依存します。つまり、level が 0.5 の場合、要素数が偶数なら大きい方の中央値を返し、奇数なら中央の値を返します。
中央値は、Python で使われている median_high の実装と同様に計算されます。
それ以外の level では、level * size_of_array の値に対応するインデックス位置の要素が返されます。
1 つのクエリ内で level の異なる複数の quantile* 関数を使用する場合、内部状態は結合されません (つまり、クエリは本来より非効率になります) 。
この場合は、quantiles 関数を使用してください。
構文
quantileExactHigh(level)(expr)別名: medianExactHigh
パラメータ
level— 省略可能。分位数のレベル。0 から 1 までの定数の浮動小数点数です。levelの値には[0.01, 0.99]の範囲を使用することを推奨します。デフォルト値: 0.5。level=0.5の場合、この関数は中央値を計算します。Float*
引数
expr— カラム値に対する式。結果の型は数値型、Date、DateTime、またはDateTime64です。(U)Int*またはFloat*またはDecimal*またはDateまたはDateTimeまたはDateTime64
戻り値
指定したレベルの分位数を返します。数値型の場合、出力フォーマットは入力フォーマットと一致します。(U)Int* または Float* または Decimal* または Date または DateTime または DateTime64
例
正確な高位分位数の計算
SELECT quantileExactHigh(number) FROM numbers(10);┌─quantileExactHigh(number)─┐
│ 5 │
└───────────────────────────┘特定の 分位数 レベルを計算する
SELECT quantileExactHigh(0.1)(number) FROM numbers(10);┌─quantileExactHigh(0.1)(number)─┐
│ 1 │
└────────────────────────────────┘