Изчисляването на процентил ви помага да класирате данните за анализ, както и да изчислите медиана за набор от стойности. Ето как да изчислите процентил в PostgreSQL с помощта на percentile_cont функция прозорец. Ще разгледаме също как да изчислим 50-ти персентил, 90-ти персентил, 95-ти персентил и n-ти персентил в PostgreSQL, тъй като те обикновено се използват при анализ на данни.
Как да изчислим процентил в PostgreSQL
Ще изчислим процентил в PostgreSQL с помощта на percentile_cont функция прозорец
Да приемем, че имате следната таблица продажби(дата_на_поръчка,сума) и искате да изчислите 50-ия персентил.
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
Бонус за четене:Как да попълните липсващите дати в PostgreSQL
Ето заявката за изчисляване на 50-ия персентил в PostgreSQL. Можете да използвате същата заявка за изчисляване на медиана в PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
В горната заявка използваме percentile_cont функция прозорец, която ви позволява да дефинирате какъв процентил (напр. 0,5 това е 50-ти персентил), който искате да изчислите. След това също използваме клауза WITHIN GROUP за изчисляване на процентил в рамките на групата продажба стойности. Ние също така използваме клауза ORDER BY, за да сортираме разпродажбата стойности, преди да изчислим процентил в PostgreSQL.
Когато използвате percentile_cont функция прозорец, PostgreSQL ще интерполира средната стойност като средна стойност от 2 средни стойности (210, 215), в случай че има 2 средни стойности. Ето защо връща 212.5
Бонус за четене:Как да изчислим пълзящата средна в PostgreSQL
Когато можете да изчислите процентил в PostgreSQL, ако не искате PostgreSQL да интерполира, а само връща най-близката стойност, използвайте percentile_disc функция прозорец вместо това. Ето един пример
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
В този случай ще върне една от средните стойности, в случай че има 2 средни стойности.
Бонус за четене:Как да импортирам CSV файл в PostgreSQL
Как да изчислим 90-ия процентил в PostgreSQL
По подобен начин можете да изчислите 90-ия процентил в PostgreSQL, като използвате percentile_cont. Променяме 0,5 на 0,9 в percentile_cont функция
postgres=# SELECT PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 255
Можете също да изчислите 90-ия процентил в PostgreSQL, като използвате percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 250
Как да изчислим 95-ия процентил в PostgreSQL
По същия начин можете да изчислите 95-ия процентил в PostgreSQL, като използвате percentile_cont
postgres=# SELECT PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 277.5
Можете също да изчислите 95-ия процентил в PostgreSQL, като използвате percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 300
Как да изчислим n-ти процентил в PostgreSQL
По подобен начин можете да изчислите n-ти процентил в PostgreSQL, като използвате percentile_cont. По принцип доставяме n/100 в percentile_cont функция
postgres=# SELECT PERCENTILE_CONT(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
Можете също да изчислите 90-ия процентил в PostgreSQL, като използвате percentile_disc
postgres=# SELECT PERCENTILE_DISC(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
След като изчислите процентил в PostgreSQL, можете да използвате PostgreSQL инструмент за отчитане за да начертаете стойностите на процентил заедно със стойностите на продажбите на линейна диаграма, за да анализирате разликата и също така да зададете цел. За това ще обединим изчислената стойност на 50-ия процентил с оригиналните продажби таблица, както е показано по-долу
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
Ето линейна диаграма, която показва дневните продажби заедно с процентил, начертана с помощта на Ubiq
Ако искате да създавате диаграми, табла за управление и отчети от базата данни PostgreSQL, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.