Skip to main content
Edit this page

quantileExact 関数

quantileExact

数値データ列の分位数を正確に計算します。

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

異なるレベルの複数の quantile* 関数をクエリで使用する場合、内部状態は結合されません(つまり、クエリは可能な限り効率的に動作しません)。この場合、quantiles 関数を使用してください。

構文

quantileExact(level)(expr)

エイリアス: medianExact

引数

  • level — 分位数のレベル。オプションのパラメーター。0から1までの定数の浮動小数点数。level 値を [0.01, 0.99] 範囲で使用することをお勧めします。デフォルト値: 0.5。level=0.5 の場合、関数は中央値を計算します。
  • expr — 数値型のデータタイプDate、またはDateTimeに結果するカラム値に対する式。

返される値

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

タイプ:

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

クエリ:

SELECT quantileExact(number) FROM numbers(10)

結果:

┌─quantileExact(number)─┐
│ 5 │
└───────────────────────┘

quantileExactLow

quantileExact と同様に、数値データ列の正確な分位数を計算します。

正確な値を取得するために、渡された全ての値は配列に結合され、完全にソートされます。ソートアルゴリズムの複雑さは O(N·log(N)) であり、ここで N = std::distance(first, last) 比較があります。

返される値は分位数のレベルと選択内の要素数に依存します。例えば、レベルが0.5の場合、偶数個の要素には下位の中央値を返し、奇数個の要素には中央の中央値を返します。中央値は、pythonで使用される median_low 実装と同様に計算されます。

他の全てのレベルでは、level * size_of_array の値に対応するインデックスの要素が返されます。例えば:

SELECT quantileExactLow(0.1)(number) FROM numbers(10)

┌─quantileExactLow(0.1)(number)─┐
1
└───────────────────────────────┘

異なるレベルの複数の quantile* 関数をクエリで使用する場合、内部状態は結合されません(つまり、クエリは可能な限り効率的に動作しません)。この場合、quantiles 関数を使用してください。

構文

quantileExactLow(level)(expr)

エイリアス: medianExactLow

引数

  • level — 分位数のレベル。オプションのパラメーター。0から1までの定数の浮動小数点数。level 値を [0.01, 0.99] 範囲で使用することをお勧めします。デフォルト値: 0.5。level=0.5 の場合、関数は中央値を計算します。
  • expr — 数値型のデータタイプDate、またはDateTimeに結果するカラム値に対する式。

返される値

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

タイプ:

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

クエリ:

SELECT quantileExactLow(number) FROM numbers(10)

結果:

┌─quantileExactLow(number)─┐
│ 4 │
└──────────────────────────┘

quantileExactHigh

quantileExact と同様に、数値データ列の正確な分位数を計算します。

渡された全ての値は配列に結合され、正確な値を取得するために完全にソートされます。ソートアルゴリズムの複雑さは O(N·log(N)) であり、ここで N = std::distance(first, last) 比較があります。

返される値は分位数のレベルと選択内の要素数に依存します。例えば、レベルが0.5の場合、偶数個の要素には上位の中央値を返し、奇数個の要素には中央の中央値を返します。中央値は、pythonで使用される median_high 実装と同様に計算されます。他の全てのレベルでは、level * size_of_array の値に対応するインデックスの要素が返されます。

この実装は、現在の quantileExact 実装と完全に同じように動作します。

異なるレベルの複数の quantile* 関数をクエリで使用する場合、内部状態は結合されません(つまり、クエリは可能な限り効率的に動作しません)。この場合、quantiles 関数を使用してください。

構文

quantileExactHigh(level)(expr)

エイリアス: medianExactHigh

引数

  • level — 分位数のレベル。オプションのパラメーター。0から1までの定数の浮動小数点数。level 値を [0.01, 0.99] 範囲で使用することをお勧めします。デフォルト値: 0.5。level=0.5 の場合、関数は中央値を計算します。
  • expr — 数値型のデータタイプDate、またはDateTimeに結果するカラム値に対する式。

返される値

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

タイプ:

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

クエリ:

SELECT quantileExactHigh(number) FROM numbers(10)

結果:

┌─quantileExactHigh(number)─┐
│ 5 │
└──────────────────────────┘

quantileExactExclusive

数値データ列の分位数を正確に計算します。

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

この関数は、Excel の PERCENTILE.EXC 関数と同等であり、(タイプ R6)です。

異なるレベルの quantileExactExclusive 関数をクエリで使用する場合、内部状態は結合されません(つまり、クエリは可能な限り効率的に動作しません)。この場合、quantilesExactExclusive 関数を使用してください。

構文

quantileExactExclusive(level)(expr)

引数

パラメーター

  • level — 分位数のレベル。オプション。(0, 1) — 範囲は含まれません。デフォルト値: 0.5。level=0.5 の場合、関数は中央値を計算します。Float

返される値

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

タイプ:

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

クエリ:

CREATE TABLE num AS numbers(1000);

SELECT quantileExactExclusive(0.6)(x) FROM (SELECT number AS x FROM num);

結果:

┌─quantileExactExclusive(0.6)(x)─┐
│ 599.6 │
└────────────────────────────────┘

quantileExactInclusive

数値データ列の分位数を正確に計算します。

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

この関数は、Excel の PERCENTILE.INC 関数と同等であり、(タイプ R7)です。

異なるレベルの quantileExactInclusive 関数をクエリで使用する場合、内部状態は結合されません(つまり、クエリは可能な限り効率的に動作しません)。この場合、quantilesExactInclusive 関数を使用してください。

構文

quantileExactInclusive(level)(expr)

引数

パラメーター

  • level — 分位数のレベル。オプション。[0, 1] — 範囲は含まれます。デフォルト値: 0.5。level=0.5 の場合、関数は中央値を計算します。Float

返される値

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

タイプ:

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

クエリ:

CREATE TABLE num AS numbers(1000);

SELECT quantileExactInclusive(0.6)(x) FROM (SELECT number AS x FROM num);

結果:

┌─quantileExactInclusive(0.6)(x)─┐
│ 599.4 │
└────────────────────────────────┘

関連項目