PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изчислим процентил в PostgreSQL

Изчисляването на процентил ви помага да класирате данните за анализ, както и да изчислите медиана за набор от стойности. Ето как да изчислите процентил в 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-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Местоположение по подразбиране на базата данни PostgreSQL в Linux

  2. Как мога да променя кодирането на база данни за PostgreSQL база данни с помощта на sql или phpPgAdmin?

  3. Пребройте кумулативната сума в Postgresql

  4. Създаване на оптимална среда за PostgreSQL

  5. Промяна на типа данни на колона на сериен