Passer au contenu principal

quantileExactWeighted

Introduit dans : v1.1.0 Calcule exactement le quantile d’une séquence de données numériques, en tenant compte du poids de chaque élément. Pour obtenir la valeur exacte, toutes les valeurs fournies sont combinées dans un tableau, qui est ensuite partiellement trié. Chaque valeur est comptée selon son poids, comme si elle était présente weight fois. Une table de hachage est utilisée dans l’algorithme. Par conséquent, si les valeurs fournies se répètent fréquemment, la fonction consomme moins de RAM que quantileExact. Vous pouvez utiliser cette fonction à la place de quantileExact et indiquer un poids de 1. Lorsque plusieurs fonctions quantile* avec des niveaux différents sont utilisées dans une requête, les états internes ne sont pas combinés (autrement dit, la requête est moins efficace qu’elle pourrait l’être). Dans ce cas, utilisez la fonction quantiles. Syntaxe
quantileExactWeighted(level)(expr, weight)
Alias : medianExactWeighted Paramètres
  • level — Facultatif. Niveau du quantile. Nombre constant à virgule flottante compris entre 0 et 1. Nous recommandons d’utiliser une valeur de level comprise dans l’intervalle [0.01, 0.99]. Valeur par défaut : 0.5. Avec level=0.5, la fonction calcule la médiane. Float*
Arguments
  • expr — Expression appliquée aux valeurs de la colonne, produisant des types de données numériques, Date ou DateTime. (U)Int* ou Float* ou Decimal* ou Date ou DateTime
  • weight — Colonne contenant les poids des éléments de la séquence. Le poids correspond au nombre d’occurrences d’une valeur. UInt*
Valeur renvoyée Quantile du niveau spécifié. Float64 ou Date ou DateTime Exemples Calcul du quantile pondéré exact
Query
CREATE TABLE t (
    n Int32,
    val Int32
) ENGINE = Memory;

-- Insert the sample data
INSERT INTO t VALUES
(0, 3),
(1, 2),
(2, 1),
(5, 4);

SELECT quantileExactWeighted(n, val) FROM t;
Response
┌─quantileExactWeighted(n, val)─┐
│                             1 │
└───────────────────────────────┘
Voir aussi
Dernière modification le 25 juin 2026