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

quantiles 関数

quantiles

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

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

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]                                       │
└─────────────────────────────────────────────────────┘