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 deleveldans l’intervalle[0.01, 0.99].Float*
Arguments
expr— Expression appliquée aux valeurs de la colonne, renvoyant des types de données numériques,Date,DateTimeouDateTime64.(U)Int*ouInt128ouUInt128ouInt256ouUInt256ouFloat*ouDecimal*ouDateouDateTimeouDateTime64
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] │
└──────────────────────────────────────┘