- Catégories :
Fonctions d’agrégation (général), Fonctions de la fenêtre
PERCENTILE_DISC¶
Renvoie une valeur de centile basée sur une distribution discrète de la colonne d’entrée (spécifiée dans order_by_expr
). La valeur renvoyée est celle dont la ligne a la plus petite valeur CUME_DIST supérieure ou égale au centile donné. Les valeurs NULL sont ignorées dans le calcul.
- Voir aussi :
Syntaxe¶
Fonction d’agrégation
PERCENTILE_DISC( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr> )
Fonction de fenêtre
PERCENTILE_DISC( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr> ) OVER ( [ PARTITION BY <expr3> ] )
Arguments¶
percentile
Le centile de la valeur que vous voulez trouver. Le centile doit être une constante entre 0,0 et 1,0. Par exemple, si vous souhaitez trouver la valeur au 90e centile, spécifiez 0,9.
order_by_expr
L’expression (généralement un nom de colonne) permettant de classer les valeurs. Par exemple, si vous souhaitez rechercher l’élève dont le score mathématique SAT se situe au 90e centile, spécifiez la colonne contenant le score mathématique SAT.
Notez qu’il s’agit également implicitement de la colonne à partir de laquelle la valeur renvoyée est choisie. Par exemple, si vous effectuez un classement par scores mathématiques SAT, le résultat que vous obtiendrez sera l’un des scores mathématiques SAT. Vous ne pouvez pas effectuer de classement par colonne et obtenir une valeur de centile pour une colonne différente.
expr3
Il s’agit de l’expression facultative utilisée pour grouper des lignes dans des partitions.
Renvoie¶
Renvoie la valeur correspondant au centile spécifié.
Notes sur l’utilisation¶
L’argument
percentile
de la fonction doit être une constante.DISTINCT n’est pas pris en charge pour cette fonction.
La fonction
PERCENTILE_CONT
interpole entre les deux valeurs les plus proches, tandis que la fonctionPERCENTILE_DISC
choisit la valeur la plus proche plutôt que l’interpolation.Lorsqu’il est utilisé comme une fonction de fenêtre :
Cette fonction ne prend pas en charge :
Sous-clause ORDER BY dans la clause OVER().
Cadres de fenêtre.
Exemples¶
L’exemple suivant montre les valeurs au 25e centile (0,25) dans différents groupes :
Créer et remplir une table avec des valeurs :
create or replace table aggr(k int, v decimal(10,2)); insert into aggr (k, v) values (0, 0), (0, 10), (0, 20), (0, 30), (0, 40), (1, 10), (1, 20), (2, 10), (2, 20), (2, 25), (2, 30), (3, 60), (4, NULL);Exécutez une requête et affichez la sortie :
select k, percentile_disc(0.25) within group (order by v) from aggr group by k order by k; +---+-------------------------------------------------+ | K | PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY V) | |---+-------------------------------------------------| | 0 | 10.00 | | 1 | 10.00 | | 2 | 10.00 | | 3 | 60.00 | | 4 | NULL | +---+-------------------------------------------------+