Skip to main content
Skip to main content

quantilesTDigest

quantilesTDigest

Introduced in: v1.1.0

Computes multiple approximate quantiles of a numeric data sequence at different levels simultaneously using the t-digest algorithm.

This function is equivalent to quantileTDigest but allows computing multiple quantile levels in a single pass, which is more efficient than calling individual quantile functions.

Memory consumption is log(n), where n is a number of values. The result depends on the order of running the query, and is nondeterministic.

The performance of the function is lower than performance of quantiles or quantilesTiming. In terms of the ratio of State size to precision, this function is much better than quantiles.

Syntax

quantilesTDigest(level1, level2, ...)(expr)

Parameters

  • level — Levels of quantiles. One or more constant floating-point numbers from 0 to 1. We recommend using level values in the range of [0.01, 0.99]. Float*

Arguments

  • expr — Expression over the column values resulting in numeric data types, Date or DateTime. (U)Int* or Float* or Date or DateTime

Returned value

Array of approximate quantiles of the specified levels in the same order as the levels were specified. For Date and DateTime inputs the output format matches the input format. Array(Float32) or Array(Date) or Array(DateTime)

Examples

Computing multiple quantiles with t-digest

SELECT quantilesTDigest(0.25, 0.5, 0.75)(number) FROM numbers(100);
┌─quantilesTDigest(0.25, 0.5, 0.75)(number)─┐
│ [24.75,49.5,74.25]                        │
└───────────────────────────────────────────┘