Le calcul de la médiane vous aide à trouver une valeur médiane dans les données et à éviter le bruit dû aux valeurs extrêmes. Voici comment calculer la médiane dans PostgreSQL en utilisant percentile_cont car il n'y a pas de fonction pour calculer la médiane dans PostgreSQL
Comment calculer la médiane dans PostgreSQL
Nous calculerons la médiane dans PostgreSQL en calculant la valeur du 50e centile, car il n'y a pas de fonction intégrée pour calculer la médiane dans PostgreSQL.
Disons que vous avez le tableau suivant sales(order_date,amount)
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 calculer la moyenne mobile dans PostgreSQL
Voici la requête pour trouver la médiane, c'est-à-dire calculer le 50e centile 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 qui vous permet de définir quel centile (par exemple 0,5 soit le 50e centile) que vous souhaitez calculer. Ensuite, nous utilisons également la clause WITHIN GROUP pour dire à PostgreSQL de calculer le centile dans le groupe de vente valeurs. Nous utilisons également la clause ORDER BY pour dire à PostgreSQL de trier la vente valeurs avant de calculer la médiane.
Lorsque vous utilisez percentile_cont , PostgreSQL interpolera la valeur médiane comme la moyenne de 2 valeurs médianes (210 215).
Lecture bonus :Comment importer un fichier CSV dans une table PostgreSQL
Si vous ne voulez pas que PostgreSQL interpole mais renvoie uniquement la valeur la plus proche, utilisez percentile_disc Au lieu. Voici un exemple
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Si vous souhaitez calculer la médiane dans PostgreSQL pour chaque groupe, utilisez la clause GROUP BY comme indiqué ci-dessous. Disons vos ventes le tableau contient également produit colonne avec les noms de produits. Dans ce cas, vous pouvez calculer la médiane pour chaque produit à l'aide de la requête suivante.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Lecture bonus :Comment calculer la croissance d'un mois sur l'autre dans PostgreSQL
Après avoir calculé la médiane dans PostgreSQL, vous pouvez utiliser un outil de création de rapports PostgreSQL pour tracer les valeurs médianes avec les valeurs de vente sur un graphique linéaire afin d'analyser la différence. Pour cela, nous joindrons la valeur médiane calculée 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 ainsi que la médiane, tracées à 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.