PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment calculer le centile dans PostgreSQL

Le calcul du centile vous aide à classer les données pour l'analyse ainsi qu'à calculer la médiane pour un ensemble de valeurs. Voici comment calculer le centile dans PostgreSQL en utilisant percentile_cont fonction fenêtre. Nous verrons également comment calculer le 50e centile, le 90e centile, le 95e centile et le nième centile dans PostgreSQL, car ils sont couramment utilisés dans l'analyse de données.

Comment calculer le centile dans PostgreSQL

Nous calculerons le centile dans PostgreSQL en utilisant percentile_cont fonction fenêtre

Disons que vous avez le tableau suivant sales(order_date,amount) et vous voulez calculer le 50e centile.

postgres=# create table sales(order_date date,sale int);

postgres=# insert into sales values('2020-04-01',210),
           ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230),
           ('2020-04-05',200),('2020-04-10',220),('2020-04-06',25),
           ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250);

postgres=# select * from sales;
 order_date | sale
------------+------
 2020-04-01 |  210
 2020-04-02 |  125
 2020-04-03 |  150
 2020-04-04 |  230
 2020-04-05 |  200
 2020-04-10 |  220
 2020-04-06 |   25
 2020-04-07 |  215
 2020-04-08 |  300
 2020-04-09 |  250

Lecture bonus :Comment remplir les dates manquantes dans PostgreSQL

Voici la requête pour calculer le 50e centile dans PostgreSQL. Vous pouvez utiliser la même requête pour calculer la médiane dans PostgreSQL.

postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales;
 percentile_cont
-----------------
           212.5

Dans la requête ci-dessus, nous utilisons percentile_cont fonction de fenêtre qui vous permet de définir quel centile (par exemple 0,5 c'est-à-dire le 50e centile) que vous voulez calculer. Ensuite, nous utilisons également la clause WITHIN GROUP pour calculer le centile au sein du groupe de vente valeurs. Nous utilisons également la clause ORDER BY pour trier la vente valeurs avant de calculer le centile dans PostgreSQL.

Lorsque vous utilisez percentile_cont fenêtre, PostgreSQL interpolera la valeur médiane comme la moyenne de 2 valeurs médianes (210, 215), au cas où il y aurait 2 valeurs médianes. C'est pourquoi il renvoie 212,5

Lecture bonus :Comment calculer la moyenne mobile dans PostgreSQL

Lorsque vous pouvez calculer le centile dans PostgreSQL, si vous ne voulez pas que PostgreSQL interpole mais ne renvoie que la valeur la plus proche, utilisez percentile_disc fonction de fenêtre à la place. Voici un exemple

postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales;
 percentile_disc
-----------------
             210

Dans ce cas, il renverra l'une des valeurs médianes, au cas où il y aurait 2 valeurs médianes.

Lecture bonus :Comment importer un fichier CSV dans PostgreSQL

Comment calculer le 90e centile dans PostgreSQL

De même, vous pouvez calculer le 90e centile dans PostgreSQL en utilisant percentile_cont. Nous changeons 0,5 à 0,9 dans percentile_cont fonction

postgres=# SELECT PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_cont
-----------------
255

Vous pouvez également calculer 90e centile dans PostgreSQL en utilisant percentile_disc

postgres=# SELECT PERCENTILE_DISC(0.9) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_disc
-----------------
250

Comment calculer le 95e centile dans PostgreSQL

De même, vous pouvez calculer le 95e centile dans PostgreSQL, en utilisant percentile_cont

postgres=# SELECT PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_cont
-----------------
277.5

Vous pouvez également calculer le 95e centile dans PostgreSQL en utilisant percentile_disc

postgres=# SELECT PERCENTILE_DISC(0.95) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_disc
-----------------
300

Comment calculer le nième centile dans PostgreSQL

De même, vous pouvez calculer le nième centile dans PostgreSQL en utilisant percentile_cont. Nous fournissons essentiellement n/100 en percentile_cont fonction

postgres=# SELECT PERCENTILE_CONT(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;

Vous pouvez également calculer 90e centile dans PostgreSQL en utilisant percentile_disc

postgres=# SELECT PERCENTILE_DISC(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;

Après avoir calculé le centile dans PostgreSQL, vous pouvez utiliser un outil de création de rapports PostgreSQL pour tracer les valeurs de centile avec les valeurs de vente sur un graphique linéaire afin d'analyser la différence et également de définir des objectifs. Pour cela, nous joindrons la valeur calculée du 50e centile aux ventes d'origine tableau comme indiqué ci-dessous

postgres=# select * from sales,
(SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales) temp 
order by order_date;
 order_date | sale | percentile_cont
------------+------+-----------------
 2020-04-01 |  210 |           212.5
 2020-04-02 |  125 |           212.5
 2020-04-03 |  150 |           212.5
 2020-04-04 |  230 |           212.5
 2020-04-05 |  200 |           212.5
 2020-04-06 |   25 |           212.5
 2020-04-07 |  215 |           212.5
 2020-04-08 |  300 |           212.5
 2020-04-09 |  250 |           212.5
 2020-04-10 |  220 |           212.5

Voici un graphique linéaire qui montre les ventes quotidiennes avec le centile, tracé à l'aide d'Ubiq

Si vous souhaitez créer des graphiques, des tableaux de bord et des rapports à partir de la base de données PostgreSQL, vous pouvez essayer Ubiq. Nous offrons un essai gratuit de 14 jours.