sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan beregnes procent i PostgreSQL

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.

  1. Hvordan finder man afhængigheder inde i en oracle-pakke?

  2. Hvordan eksporterer man en mysql-database ved hjælp af kommandoprompt?

  3. Hvad er den bedste praksis for primærnøgler i tabeller?

  4. BRUG TIP og DISABLE_OPTIMIZED_NESTED_LOOP