Percentiel berekenen helpt u bij het rangschikken van gegevens voor analyse en bij het berekenen van de mediaan voor een reeks waarden. Hier leest u hoe u het percentiel in PostgreSQL kunt berekenen met percentile_cont venster functie. We zullen ook bekijken hoe u het 50e percentiel, 90e percentiel, 95e percentiel en nde percentiel in PostgreSQL kunt berekenen, aangezien deze vaak worden gebruikt bij gegevensanalyse.
Percentiel berekenen in PostgreSQL
We berekenen het percentiel in PostgreSQL met behulp van percentile_cont vensterfunctie
Stel dat u de volgende tabel sales(order_date,amount) . heeft en u wilt het 50e percentiel berekenen.
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:ontbrekende datums in PostgreSQL invullen
Dit is de vraag om het 50e percentiel in PostgreSQL te berekenen. U kunt dezelfde zoekopdracht gebruiken om de mediaan in PostgreSQL te berekenen.
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 vensterfunctie waarmee u kunt definiëren welk percentiel (bijv. 0,5 dat is het 50e percentiel) dat u wilt berekenen. Dan gebruiken we ook de clausule WITHIN GROUP om het percentiel te berekenen binnen de groep van verkoop waarden. We gebruiken ook de ORDER BY-clausule om de verkoop te sorteren waarden voordat we percentiel berekenen in PostgreSQL.
Wanneer u percentile_cont . gebruikt window-functie, zal PostgreSQL de mediaanwaarde interpoleren als het gemiddelde van 2 middelste waarden (210, 215) in het geval dat er 2 middelste waarden zijn. Daarom retourneert het 212,5
Bonus lezen:voortschrijdend gemiddelde berekenen in PostgreSQL
Wanneer u percentiel in PostgreSQL kunt berekenen en u niet wilt dat PostgreSQL interpoleert maar alleen de dichtstbijzijnde waarde retourneert, gebruikt u percentile_disc vensterfunctie in plaats daarvan. Hier is een voorbeeld
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
In dit geval zal het een van de middelste waarden retourneren, voor het geval er 2 middelste waarden zijn.
Bonus Lezen:CSV-bestand importeren in PostgreSQL
Hoe het 90e percentiel in PostgreSQL te berekenen
Op dezelfde manier kunt u het 90e percentiel in PostgreSQL berekenen met behulp van percentile_cont. We veranderen 0,5 in 0,9 in percentile_cont functie
postgres=# SELECT PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 255
U kunt het 90e percentiel in PostgreSQL ook berekenen met percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 250
Het 95e percentiel berekenen in PostgreSQL
Op dezelfde manier kunt u het 95e percentiel in PostgreSQL berekenen met behulp van percentile_cont
postgres=# SELECT PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 277.5
Je kunt ook het 95e percentiel in PostgreSQL berekenen met percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 300
Hoe het n-de percentiel in PostgreSQL te berekenen
Op dezelfde manier kunt u het n-de percentiel in PostgreSQL berekenen met behulp van percentile_cont. We leveren in principe n/100 in percentile_cont functie
postgres=# SELECT PERCENTILE_CONT(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
U kunt het 90e percentiel in PostgreSQL ook berekenen met percentile_disc
postgres=# SELECT PERCENTILE_DISC(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
Nadat u het percentiel in PostgreSQL heeft berekend, kunt u een PostgreSQL-rapportagetool gebruiken om de percentielwaarden samen met de verkoopwaarden in een lijndiagram uit te zetten om het verschil te analyseren en ook om doelen te stellen. Daarvoor voegen we de berekende 50e percentielwaarde 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 het percentiel toont, 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.