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.