Skip to main content
Skip to main content

quantiles Functions

quantiles

Introduced in: v1.1

Computes multiple approximate quantiles of a numeric data sequence at different levels simultaneously.

This function applies reservoir sampling with a reservoir size up to 8192 and a random number generator for sampling. The result is non-deterministic.

Using quantiles is more efficient than calling multiple individual quantile functions when you need multiple quantile values, as all quantiles are calculated in a single pass through the data.

Syntax

quantiles(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

Returned value

Array of approximate quantiles of the specified levels in the same order as the levels were specified. Array(Float64) or Array(Date) or Array(DateTime)

Examples

Computing multiple quantiles efficiently

CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

SELECT quantiles(0.25, 0.5, 0.75, 0.9)(val) FROM t;
┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [3, 5.5, 8, 9.5]                     │
└──────────────────────────────────────┘