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.