Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Fonctions quantiles

quantiles

Introduit dans : v1.1.0

Calcule simultanément plusieurs quantiles approximatifs d’une séquence de données numériques, à différents niveaux.

Cette fonction utilise un échantillonnage en réservoir, avec une taille de réservoir pouvant atteindre 8192, ainsi qu’un générateur de nombres aléatoires pour l’échantillonnage. Le résultat n’est pas déterministe.

L’utilisation de quantiles est plus efficace que l’appel de plusieurs fonctions quantile distinctes lorsque vous avez besoin de plusieurs valeurs de quantile, car tous les quantiles sont calculés en un seul parcours des données.

Syntaxe

quantiles(level1, level2, ...)(expr)

Paramètres

  • level — Niveaux de quantile. Un ou plusieurs nombres à virgule flottante constants compris entre 0 et 1. Nous recommandons d’utiliser des valeurs de level dans l’intervalle [0.01, 0.99]. Float*

Arguments

Valeur renvoyée

Tableau de quantiles approximatifs pour les niveaux spécifiés, dans le même ordre que celui des niveaux indiqués. Les arguments numériques produisent Float64, tandis que les arguments Decimal, Date, DateTime et DateTime64 conservent leur format d’entrée. Array(Float64) ou Array(Decimal*) ou Array(Date) ou Array(DateTime) ou Array(DateTime64)

Exemples

Calcul efficace de plusieurs quantiles

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)─┐
│ [2.5,5,7.5,9]                        │
└──────────────────────────────────────┘
Navigation