Beregning af Percentil hjælper dig med at rangere data til analyse samt beregne medianen for et sæt værdier. Sådan beregner du percentil i PostgreSQL ved hjælp af percentile_cont vinduesfunktion. Vi vil også se på, hvordan man beregner 50. percentil, 90. percentil, 95. percentil og n. percentil i PostgreSQL, da de almindeligvis bruges i dataanalyse.
Sådan beregner man procent i PostgreSQL
Vi vil beregne percentil i PostgreSQL ved hjælp af percentile_cont vinduesfunktion
Lad os sige, at du har følgende tabel salg(ordre_dato,beløb) og du vil beregne 50. percentil.
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
Bonuslæser:Sådan udfyldes manglende datoer i PostgreSQL
Her er forespørgslen til at beregne 50. percentil i PostgreSQL. Du kan bruge den samme forespørgsel til at beregne medianen 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 vinduesfunktion, 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 beregne percentil inden for gruppen salg værdier. Vi bruger også ORDER BY-klausulen til at sortere salget værdier, før vi beregner percentil i PostgreSQL.
Når du bruger percentile_cont vinduesfunktion, vil PostgreSQL interpolere medianværdien som gennemsnittet af 2 mellemværdier (210, 215), hvis der er 2 mellemværdier. Derfor returnerer den 212,5
Bonus Læs:Sådan beregnes glidende gennemsnit i PostgreSQL
Når du kan beregne percentil i PostgreSQL, hvis du ikke vil have PostgreSQL til at interpolere, men kun returnere den nærmeste værdi, skal du bruge percentile_disc vinduesfunktion i stedet. Her er et eksempel
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
I dette tilfælde returnerer den en af de midterste værdier, hvis der er 2 mellemværdier.
Bonus Læs:Sådan importeres CSV-fil til PostgreSQL
Sådan beregnes 90. Percentil i PostgreSQL
På samme måde kan du beregne 90. percentil i PostgreSQL ved hjælp af percentile_cont. Vi ændrer 0,5 til 0,9 i percentile_cont funktion
postgres=# SELECT PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 255
Du kan også beregne 90. percentil i PostgreSQL ved hjælp af percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 250
Sådan beregnes 95. Percentil i PostgreSQL
På samme måde kan du beregne 95. percentil i PostgreSQL ved hjælp af percentile_cont
postgres=# SELECT PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 277.5
Du kan også beregne 95. percentil i PostgreSQL ved hjælp af percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 300
Sådan beregnes n. procent i PostgreSQL
På samme måde kan du beregne n. percentil i PostgreSQL ved hjælp af percentil_kont. Vi leverer som udgangspunkt n/100 i percentile_cont funktion
postgres=# SELECT PERCENTILE_CONT(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
Du kan også beregne 90. percentil i PostgreSQL ved hjælp af percentile_disc
postgres=# SELECT PERCENTILE_DISC(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
Når du har beregnet percentil i PostgreSQL, kan du bruge et PostgreSQL-rapporteringsværktøj til at plotte percentilværdierne sammen med salgsværdier på et linjediagram for at analysere forskellen og også foretage målsætning. Til det vil vi forbinde den beregnede 50. percentilvæ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 daglige salg sammen med percentil, 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.