PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So berechnen Sie den Median in PostgreSQL

Die Berechnung des Medians hilft Ihnen, den Mittelwert in den Daten zu finden und Rauschen aufgrund von Extremwerten zu vermeiden. So berechnen Sie den Median in PostgreSQL mit percentile_cont da es in PostgreSQL keine Funktion zur Berechnung des Medians gibt

So berechnen Sie den Median in PostgreSQL

Wir berechnen den Median in PostgreSQL, indem wir den 50. Perzentilwert berechnen, da es in PostgreSQL keine integrierte Funktion zur Berechnung des Medians gibt.

Angenommen, Sie haben die folgende Tabelle 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

Bonuslektüre:So berechnen Sie den gleitenden Durchschnitt in PostgreSQL

Hier ist die Abfrage, um den Median zu finden, d. h. das 50. Perzentil in PostgreSQL zu berechnen.

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

In der obigen Abfrage verwenden wir percentile_cont Funktion, mit der Sie definieren können, welches Perzentil (z. B. 0,5, das ist das 50. Perzentil) Sie berechnen möchten. Dann verwenden wir auch die WITHIN GROUP-Klausel, um PostgreSQL anzuweisen, das Perzentil innerhalb der Gruppe von Verkauf zu berechnen Werte. Wir verwenden auch die ORDER BY-Klausel, um PostgreSQL anzuweisen, den Verkauf zu sortieren Werte vor der Berechnung des Medians.

Wenn Sie percentile_cont verwenden , interpoliert PostgreSQL den Medianwert als Durchschnitt von 2 mittleren Werten (210.215).

Bonuslektüre:So importieren Sie eine CSV-Datei in eine PostgreSQL-Tabelle

Wenn Sie nicht möchten, dass PostgreSQL interpoliert, sondern nur den nächstliegenden Wert zurückgibt, verwenden Sie percentile_disc stattdessen. Hier ist ein Beispiel

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

Wenn Sie den Median in PostgreSQL für jede Gruppe berechnen möchten, verwenden Sie die GROUP BY-Klausel wie unten gezeigt. Sagen wir Ihre Verkäufe Tabelle enthält auch Produkt Spalte mit Produktnamen. In diesem Fall können Sie mit der folgenden Abfrage den Median für jedes Produkt berechnen.

postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) 
FROM sales 
GROUP BY PRODUCT;

Bonuslektüre:So berechnen Sie das Wachstum von Monat zu Monat in PostgreSQL

Nachdem Sie den Median in PostgreSQL berechnet haben, können Sie ein PostgreSQL-Berichtstool verwenden, um die Medianwerte zusammen mit den Verkaufswerten in einem Liniendiagramm darzustellen, um die Differenz zu analysieren. Dazu verbinden wir den errechneten Medianwert mit dem ursprünglichen Umsatz Tabelle wie unten gezeigt

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

Hier ist ein Liniendiagramm, das die täglichen Verkäufe zusammen mit dem Median zeigt, dargestellt mit Ubiq

Wenn Sie Diagramme, Dashboards und Berichte aus der PostgreSQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.