Percentile SQL

Percentile Sql



Quels sont les deux mots courants qui sont si étroitement liés qu’on pourrait penser qu’ils sont identiques ? Pour nous, développeurs de bases de données, ce serait la base de données SQL et les statistiques.

L'un des calculs statistiques courants, même dans l'administration de bases de données, est le centile.

Un percentile est une mesure statistique qui nous permet de diviser un ensemble de données en parties égales de segments. Le rôle des percentiles est de fournir un aperçu de la distribution des données, ce qui nous permet de comprendre comment les valeurs sont réparties.







Dans ce didacticiel, nous apprendrons comment calculer les centiles en SQL pour diviser les données en différents segments.



Exemple de tableau

Commençons par créer un tableau de base contenant un exemple de données à des fins de démonstration. Cela nous aide à illustrer le comportement des différentes méthodes de calcul des percentiles et le résultat qui en résulte.



Créons un tableau appelé « produits » qui contient les informations sur l'épicerie. La clause « créer une table » est la suivante :





Produits CRÉER UNE TABLE (

product_id INT CLÉ PRIMAIRE AUTO_INCREMENT,

nom_produit VARCHAR( 255 ),

catégorie VARCHAR( 255 ),

prix DÉCIMAL( dix , 2 ),

quantité INT,

date_expirationDATE,

code-barres BIGINT

);

Une fois que nous avons créé le tableau, nous pouvons continuer et ajouter les exemples de données dans le tableau. Nous pouvons utiliser les instructions « insérer » suivantes :

insérer
dans
produits (nom_produit,
catégorie,
prix,
quantité,
date d'expiration,
code à barre)
valeurs ( 'Toque de chef 25 cm' ,
'boulangerie' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

insérer
dans
produits (nom_produit,
catégorie,
prix,
quantité,
date d'expiration,
code à barre)
valeurs ( 'Œufs de caille - en conserve' ,
'garde-manger' ,
17,99 ,
67 ,
'2023-09-29' ,
1708039594250 );

insérer
dans
produits (nom_produit,
catégorie,
prix,
quantité,
date d'expiration,
code à barre)
valeurs ( 'Café - Lait de Poule Capuccino' ,
'boulangerie' ,
92.53 ,
dix ,
'2023-09-22' ,
8704051853058 );

insérer
dans
produits (nom_produit,
catégorie,
prix,
quantité,
date d'expiration,
code à barre)
valeurs ( 'Poire - Piquante' ,
'boulangerie' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

insérer
dans
produits (nom_produit,
catégorie,
prix,
quantité,
date d'expiration,
code à barre)
valeurs ( 'Pâtes - Cheveux d'Ange' ,
'garde-manger' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

insérer
dans
produits (nom_produit,
catégorie,
prix,
quantité,
date d'expiration,
code à barre)
valeurs ( 'Vin - Prosecco Valdobiaddene' ,
'produire' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

A la fin, vous devriez avoir un tableau comme suit :



Percentile SQL

Comme vous pouvez le deviner, la manière de calculer le percentile peut différer selon le moteur de base de données. Cependant, la méthode la plus courante consiste à utiliser les fonctions PERCENTILE_DISC() et PERCENTILE_CONT().

Ces fonctions font partie de la spécification Standard SQL (2003). Par conséquent, il sera forcément pris en charge par PostgreSQL et Oracle.

PERCENTILE_CONT()

Commençons par la fonction PERCENTILE_CONT(). Cette fonction nous permet de calculer les valeurs centiles en tant que fraction de l'ensemble de données.

La fonction renvoie des valeurs interpolées qui peuvent ne pas être précises par rapport au point de données spécifique de votre ensemble de données.

La syntaxe de la fonction est la suivante :

PERCENTILE_CONT(centile) DANS GROUPE ( COMMANDE PAR nom_colonne) OVER ();

La fonction accepte les paramètres suivants :

  • Percentile – Il spécifie la valeur percentile souhaitée (0,0 à 1,0).
  • nom_colonne – Il désigne la colonne pour laquelle nous souhaitons calculer le centile.
  • OVER () – Il définit la fonction de fenêtre pour spécifier l’ensemble de données.

Un exemple d'utilisation de cette fonction est le suivant :

SÉLECTIONNER

PERCENTILE_CONT( 0,5 ) DANS GROUPE ( COMMANDE PAR prix) PLUS () COMME médiane

DEPUIS

des produits;

Remarque : La requête donnée ne fonctionne que dans PostgreSQL puisque MySQL ne prend pas en charge l'utilisation de WITHIN GROUP.

Ceci calcule les 50 ème percentile des données fournies.

POURCENTILE_DISC()

Nous pouvons utiliser la fonction PERCENTILE_DISC() pour calculer la valeur centile en tant que valeur discrète directement à partir de l'ensemble de données.

La fonction renvoie une valeur qui correspond à un point de données réel.

La syntaxe de la fonction est la suivante (PostgreSQL) :

PERCENTILE_DISC(centile) DANS GROUPE ( COMMANDE PAR nom_colonne) OVER ();

Un exemple de résultat est le suivant :

SÉLECTIONNER

PERCENTILE_DISC( 0,25 ) DANS GROUPE ( COMMANDE PAR prix) PLUS () AS percentile_25

DEPUIS

des produits;

Cela devrait calculer le 25 ème percentile des données.

Conclusion

Ce didacticiel explique comment utiliser les différentes fonctions pour calculer les centiles dans les bases de données SQL.