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

quantileTiming

導入バージョン: v1.1.0 指定された精度で、数値データの数列の分位点を計算します。 結果は決定論的です (クエリ処理の順序に依存しません) 。 この関数は、Web ページの読み込み時間やバックエンドの応答時間のような分布を表す数列を扱うために最適化されています。 クエリ内で異なるレベルの複数の quantile* 関数を使用する場合、内部状態は結合されません (つまり、クエリの実行効率は本来より低くなります) 。 この場合は、quantiles 関数を使用してください。 精度 計算が正確になるのは、次の場合です。
  • 値の総数が 5670 を超えない。
  • 値の総数が 5670 を超えていても、ページの読み込み時間が 1024ms 未満である。
それ以外の場合、計算結果は 16 ms 単位に丸められます。
ページの読み込み時間の分位点を計算する場合、この関数は quantile よりも効率的で、精度も高くなります。
関数に値が渡されない場合 (quantileTimingIf の使用時) は、NaN が返されます。これは、そのようなケースを結果が 0 になるケースと区別するためです。NaN 値のソートに関する注意事項については、ORDER BY 句 を参照してください。
構文
quantileTiming(level)(expr)
別名: medianTiming パラメータ
  • level — オプション。分位点のレベルです。0 から 1 までの定数の浮動小数点数。level には [0.01, 0.99] の範囲の値を使用することを推奨します。デフォルト値: 0.5。level=0.5 の場合、この関数は中央値を計算します。Float*
引数
  • expr — カラムの値に対する式で、Float* 型の数値を返します。負の値を関数に渡した場合の動作は未定義です。値が 30,000 を超える場合 (ページの読み込み時間が 30 秒を超える場合) は、30,000 と見なされます。Float*
戻り値 指定したレベルの分位点。関数に値が渡されない場合 (quantileTimingIf を使用している場合) は、NaN が返されます。これは、そのようなケースを結果が 0 になるケースと区別するためです。Float32 タイミングの分位点を計算する
Query
CREATE TABLE t (response_time UInt32) ENGINE = Memory;
INSERT INTO t VALUES (72), (112), (126), (145), (104), (242), (313), (168), (108);

SELECT quantileTiming(response_time) FROM t;
Response
┌─quantileTiming(response_time)─┐
│                           126 │
└───────────────────────────────┘
関連項目
最終更新日 2026年6月10日