sql >> Database >  >> RDS >> PostgreSQL

Hoe de mediaan te berekenen in PostgreSQL

Door de mediaan te berekenen, kunt u de middelste waarde in gegevens vinden en ruis als gevolg van extreme waarden voorkomen. Zo berekent u de mediaan in PostgreSQL met behulp van percentile_cont aangezien er geen functie is om de mediaan te berekenen in PostgreSQL

De mediaan berekenen in PostgreSQL

We berekenen de mediaan in PostgreSQL door de waarde van het 50e percentiel te berekenen, aangezien er geen ingebouwde functie is om de mediaan in PostgreSQL te berekenen.

Stel dat u de volgende tabel sales(order_date,amount) . heeft

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

Bonus lezen:voortschrijdend gemiddelde berekenen in PostgreSQL

Dit is de zoekopdracht om de mediaan te vinden, dat wil zeggen, bereken het 50e percentiel in PostgreSQL.

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

In de bovenstaande zoekopdracht gebruiken we percentile_cont functie waarmee u kunt definiëren welk percentiel (bijvoorbeeld 0,5 dat 50e percentiel is) u wilt berekenen. Vervolgens gebruiken we ook de clausule WITHIN GROUP om PostgreSQL te vertellen om het percentiel te berekenen binnen de groep van verkoop waarden. We gebruiken ook de ORDER BY-clausule om PostgreSQL te vertellen om de verkoop te sorteren waarden voordat de mediaan wordt berekend.

Wanneer u percentile_cont . gebruikt , zal PostgreSQL de mediaanwaarde interpoleren als het gemiddelde van 2 middelste waarden (210.215).

Bonus Lezen:CSV-bestand importeren in PostgreSQL-tabel

Als u niet wilt dat PostgreSQL interpoleert maar alleen de dichtstbijzijnde waarde retourneert, gebruikt u percentile_disc in plaats van. Hier is een voorbeeld

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

Als u de mediaan in PostgreSQL voor elke groep wilt berekenen, gebruikt u de GROUP BY-clausule zoals hieronder weergegeven. Laten we zeggen uw verkopen tabel bevat ook product kolom met productnamen. In dat geval kunt u de mediaan voor elk product berekenen met de volgende zoekopdracht.

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

Bonus lezen:hoe u de groei van maand tot maand in PostgreSQL kunt berekenen

Nadat u de mediaan in PostgreSQL heeft berekend, kunt u een PostgreSQL-rapportagetool gebruiken om de mediaanwaarden samen met de verkoopwaarden in een lijndiagram uit te zetten om het verschil te analyseren. Daarvoor voegen we de berekende mediaanwaarde toe aan de originele verkoop tabel zoals hieronder weergegeven

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 is een lijndiagram dat de dagelijkse verkoop samen met de mediaan laat zien, uitgezet met Ubiq

Als u grafieken, dashboards en rapporten wilt maken vanuit de PostgreSQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen.

  1. Hoe PosgreSQL txid_current() waarde te interpreteren

  2. Een tabel afkappen in een opgeslagen procedure

  3. Failover-opties voor multi-cloud volledige databasecluster voor MariaDB-cluster

  4. Maak een Database Mail Account (SSMS)