Catégories :

Fonctions d’agrégation (général), Fonctions de la fenêtre

PERCENTILE_CONT

Renvoie une valeur de centile basée sur une distribution continue de la colonne d’entrée (spécifiée dans classer_par_expr). Si aucune ligne d’entrée ne se situe exactement au centile souhaité, le résultat est calculé à l’aide d’une interpolation linéaire des deux valeurs d’entrée les plus proches. Les valeurs NULL sont ignorées dans le calcul.

Voir aussi :

PERCENTILE_DISC

Syntaxe

Fonction d’agrégation

PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>)

Fonction de fenêtre

PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>) OVER ( [ PARTITION BY <expr3> ] )

Arguments

centile

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.

classer_par_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é. Si aucune ligne d’entrée ne se situe exactement au centile souhaité, le résultat est calculé à l’aide d’une interpolation linéaire des deux valeurs d’entrée les plus proches.

Note

Si un groupe ne contient qu’une seule valeur, cette valeur sera renvoyée pour tout centile spécifié par (par exemple, le centile 0,0 et le centile 1,0 renverront cette ligne).

Notes sur l’utilisation

  • L’argument centile 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 fonction PERCENTILE_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écuter une requête et afficher la sortie (notez que certaines valeurs sont exactes et d’autres interpolées) :

select k, percentile_cont(0.25) within group (order by v) 
  from aggr 
  group by k
  order by k;
+---+-------------------------------------------------+
| K | PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY V) |
|---+-------------------------------------------------|
| 0 |                                        10.00000 |
| 1 |                                        12.50000 |
| 2 |                                        17.50000 |
| 3 |                                        60.00000 |
| 4 |                                            NULL |
+---+-------------------------------------------------+