メインコンテンツまでスキップ
メインコンテンツまでスキップ

quantiles 関数

quantiles

構文: quantiles(level1, level2, ...)(x)

すべての分位数の関数には対応する分位数関数があり:quantiles, quantilesDeterministic, quantilesTiming, quantilesTimingWeighted, quantilesExact, quantilesExactWeighted, quantileExactWeightedInterpolated, quantileInterpolatedWeighted, quantilesTDigest, quantilesBFloat16, quantilesDD。これらの関数は、リストされたレベルのすべての分位数を1回のパスで計算し、結果の値の配列を返します。

quantilesExactExclusive

数値データシーケンスの分位数を正確に計算します。

正確な値を取得するために、すべての渡された値は配列にまとめられ、その後部分的にソートされます。したがって、この関数はO(n)のメモリを消費し、ここでnは渡された値の数です。ですが、値の数が少ない場合、この関数は非常に効果的です。

この関数は、Excel関数のPERCENTILE.EXCに相当します(タイプ R6)。

quantileExactExclusiveよりもレベルのセットでより効率的に動作します。

構文

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

引数

パラメータ

  • level — 分位数のレベル。可能な値:(0, 1)— 境界は含まれません。Float

返される値

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

配列値の型:

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

クエリ:

CREATE TABLE num AS numbers(1000);

SELECT quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x) FROM (SELECT number AS x FROM num);

結果:

┌─quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x)─┐
│ [249.25,499.5,749.75,899.9,949.9499999999999,989.99,998.999]        │
└─────────────────────────────────────────────────────────────────────┘

quantilesExactInclusive

数値データシーケンスの分位数を正確に計算します。

正確な値を取得するために、すべての渡された値は配列にまとめられ、その後部分的にソートされます。したがって、この関数はO(n)のメモリを消費し、ここでnは渡された値の数です。ですが、値の数が少ない場合、この関数は非常に効果的です。

この関数は、Excel関数のPERCENTILE.INCに相当します(タイプ R7)。

quantileExactInclusiveよりもレベルのセットでより効率的に動作します。

構文

quantilesExactInclusive(level1, level2, ...)(expr)

引数

パラメータ

  • level — 分位数のレベル。可能な値:[0, 1] — 境界は含まれます。Float

返される値

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

配列値の型:

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

クエリ:

CREATE TABLE num AS numbers(1000);

SELECT quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x) FROM (SELECT number AS x FROM num);

結果:

┌─quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x)─┐
│ [249.75,499.5,749.25,899.1,949.05,989.01,998.001]                   │
└─────────────────────────────────────────────────────────────────────┘

quantilesGK

quantilesGKquantileGKと似ていますが、異なるレベルでの数量を同時に計算でき、配列を返します。

構文

quantilesGK(accuracy, level1, level2, ...)(expr)

返される値

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

配列値の型:

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

クエリ:

SELECT quantilesGK(1, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(1, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [1,1,1]                                          │
└──────────────────────────────────────────────────┘

SELECT quantilesGK(10, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(10, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [156,413,659]                                     │
└───────────────────────────────────────────────────┘


SELECT quantilesGK(100, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(100, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [251,498,741]                                      │
└────────────────────────────────────────────────────┘

SELECT quantilesGK(1000, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(1000, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [249,499,749]                                       │
└─────────────────────────────────────────────────────┘