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

So berechnen Sie das Perzentil in PostgreSQL

Die Berechnung des Perzentils hilft Ihnen, Daten für die Analyse einzustufen und den Median für eine Reihe von Werten zu berechnen. So berechnen Sie das Perzentil in PostgreSQL mit percentile_cont Fensterfunktion. Wir werden uns auch ansehen, wie das 50. Perzentil, das 90. Perzentil, das 95. Perzentil und das n. Perzentil in PostgreSQL berechnet werden, da sie häufig in der Datenanalyse verwendet werden.

So berechnen Sie das Perzentil in PostgreSQL

Wir berechnen das Perzentil in PostgreSQL mit percentile_cont Fensterfunktion

Angenommen, Sie haben die folgende Tabelle sales(order_date,amount) und Sie möchten das 50. Perzentil berechnen.

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:Wie man fehlende Daten in PostgreSQL einträgt

Hier ist die Abfrage zur Berechnung des 50. Perzentils in PostgreSQL. Sie können dieselbe Abfrage verwenden, um den Median 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 Fensterfunktion, mit der Sie festlegen können, welches Perzentil (z. B. 0,5 das ist das 50. Perzentil), die Sie berechnen möchten. Dann verwenden wir auch die WITHIN GROUP-Klausel, um das Perzentil innerhalb der Gruppe von Verkauf zu berechnen Werte. Wir verwenden auch die ORDER BY-Klausel, um den Verkauf zu sortieren Werte, bevor wir das Perzentil in PostgreSQL berechnen.

Wenn Sie percentile_cont verwenden window-Funktion interpoliert PostgreSQL den Medianwert als Durchschnitt von 2 mittleren Werten (210, 215), falls es 2 mittlere Werte gibt. Deshalb gibt es 212,5

zurück

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

Wenn Sie das Perzentil in PostgreSQL berechnen können und PostgreSQL nicht interpolieren, sondern nur den nächsten Wert zurückgeben soll, verwenden Sie percentile_disc stattdessen Fensterfunktion. Hier ist ein Beispiel

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

In diesem Fall wird der mittlere Wert zurückgegeben, falls es 2 mittlere Werte gibt.

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

So berechnen Sie das 90. Perzentil in PostgreSQL

In ähnlicher Weise können Sie das 90. Perzentil in PostgreSQL mit percentile_cont berechnen. Wir ändern 0,5 auf 0,9 inpercentile_cont Funktion

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

Sie können auch das 90. Perzentil in PostgreSQL mit percentile_disc berechnen

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

So berechnen Sie das 95. Perzentil in PostgreSQL

Auf ähnliche Weise können Sie das 95. Perzentil in PostgreSQL mit percentile_cont berechnen

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

Sie können das 95. Perzentil auch in PostgreSQL mit percentile_disc berechnen

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

So berechnen Sie das n-te Perzentil in PostgreSQL

In ähnlicher Weise können Sie das n-te Perzentil in PostgreSQL mit percentile_cont berechnen. Wir liefern grundsätzlich n/100 in percentile_cont Funktion

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

Sie können auch das 90. Perzentil in PostgreSQL mit percentile_disc berechnen

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

Nachdem Sie das Perzentil in PostgreSQL berechnet haben, können Sie ein PostgreSQL-Berichtstool verwenden, um die Perzentilwerte zusammen mit den Verkaufswerten in einem Liniendiagramm darzustellen, um die Differenz zu analysieren und auch Ziele festzulegen. Dazu verbinden wir den berechneten 50. Perzentilwert mit den ursprünglichen Umsätzen 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 Perzentil 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.