Beregning af median hjælper dig med at finde mellemværdier i data og undgå støj på grund af ekstreme værdier. Sådan beregnes medianen i PostgreSQL ved hjælp af percentile_cont da der ikke er nogen funktion til at beregne median i PostgreSQL
Sådan beregnes median i PostgreSQL
Vi vil beregne median i PostgreSQL ved at beregne 50. percentilværdi, da der ikke er nogen indbygget funktion til at beregne median i PostgreSQL.
Lad os sige, at du har følgende tabel salg(ordre_dato,beløb)
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 Læs:Sådan beregnes glidende gennemsnit i PostgreSQL
Her er forespørgslen for at finde median, det vil sige beregne 50. percentil i PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
I ovenstående forespørgsel bruger vi percentile_cont funktion, der giver dig mulighed for at definere, hvilken percentil (f.eks. 0,5 det er 50. percentil), du vil beregne. Så bruger vi også WITHIN GROUP-sætning til at fortælle PostgreSQL at beregne percentilen inden for gruppen salg værdier. Vi bruger også ORDER BY-klausulen til at fortælle PostgreSQL at sortere salget værdier før medianen beregnes.
Når du bruger percentile_cont , vil PostgreSQL interpolere medianværdien som gennemsnittet af 2 mellemværdier (210.215).
Bonus Læs:Sådan importeres CSV-fil i PostgreSQL-tabel
Hvis du ikke vil have PostgreSQL til at interpolere, men kun returnere den nærmeste værdi, skal du bruge percentile_disc i stedet. Her er et eksempel
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Hvis du ønsker at beregne medianen i PostgreSQL for hver gruppe, skal du bruge GROUP BY-sætning som vist nedenfor. Lad os sige dit salg tabel indeholder også produkt kolonne med produktnavne. I så fald kan du beregne medianen for hvert produkt ved hjælp af følgende forespørgsel.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Bonus Læs:Sådan beregnes månedlig vækst i PostgreSQL
Når du har beregnet median i PostgreSQL, kan du bruge et PostgreSQL-rapporteringsværktøj til at plotte medianværdierne sammen med salgsværdier på et linjediagram for at analysere forskellen. Til det vil vi forbinde den beregnede medianværdi med det oprindelige salg tabel som vist nedenfor
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
Her er et linjediagram, der viser det daglige salg sammen med medianen, plottet ved hjælp af Ubiq
Hvis du vil oprette diagrammer, dashboards og rapporter fra PostgreSQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.