Passer au contenu principal

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
  • expr — Expression appliquée aux valeurs de la colonne, renvoyant un type de données numérique, Date ou DateTime. (U)Int* ou Float* ou Decimal* ou Date ou DateTime
Valeur renvoyée Tableau de quantiles approximatifs pour les niveaux spécifiés, dans le même ordre que celui des niveaux indiqués. Array(Float64) ou Array(Date) ou Array(DateTime) Exemples Calcul efficace de plusieurs quantiles
Query
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;
Response
┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [3, 5.5, 8, 9.5]                     │
└──────────────────────────────────────┘
Dernière modification le 25 juin 2026