quantileExactExclusive
Introduit dans : v20.1.0
Semblable à quantileExact, cette fonction calcule le quantile exact d’une séquence de données numériques.
Cette fonction est équivalente à quantileExact, mais utilise la méthode exclusive pour calculer les quantiles, comme décrit dans la méthode R-6.
Lors de l’utilisation de cette fonction, le quantile est calculé de sorte que la formule d’interpolation pour un quantile donné p prenne la forme suivante : x[floor(n*p)] + (n*p - floor(n*p)) * (x[floor(n*p)+1] - x[floor(n*p)]), où x est le tableau trié.
Pour obtenir la valeur exacte, toutes les valeurs transmises sont regroupées dans un tableau, qui est ensuite entièrement trié.
La complexité de l’algorithme de tri est de O(N·log(N)), où N = std::distance(first, last) comparaisons.
Lors de l’utilisation de plusieurs fonctions quantile* avec différents niveaux dans une requête, les états internes ne sont pas combinés (c’est-à-dire que la requête est moins efficace qu’elle pourrait l’être).
Dans ce cas, utilisez la fonction quantiles.
Syntaxe
quantileExactExclusive(level)(expr)Paramètres
level— Niveau du quantile. Nombre constant à virgule flottante compris entre 0 et 1 (exclus). Nous recommandons d'utiliser une valeurleveldans l'intervalle(0.01, 0.99).Float*
Arguments
expr— Expression sur les valeurs de la colonne produisant des types de données numériques,DateouDateTime.(U)Int*ouFloat*ouDateouDateTime
Valeur renvoyée
Renvoie le quantile du niveau spécifié. Float64
Exemples
Calcul du quantile exclusif exact
SELECT quantileExactExclusive(0.25)(number) FROM numbers(5);┌─quantileExactExclusive(0.25)(number)─┐
│ 0.5 │
└──────────────────────────────────────┘Calcul de plusieurs niveaux de quantile
SELECT quantileExactExclusive(0.1)(number), quantileExactExclusive(0.9)(number) FROM numbers(10);┌─quantileExactExclusive(0.1)(number)─┬─quantileExactExclusive(0.9)(number)─┐
│ 0.10000000000000009 │ 8.9 │
└─────────────────────────────────────┴─────────────────────────────────────┘