PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Menghitung Persentil di PostgreSQL

Menghitung Persentil membantu Anda memberi peringkat data untuk analisis serta menghitung median untuk sekumpulan nilai. Berikut cara menghitung persentil di PostgreSQL menggunakan percentile_cont fungsi jendela. Kita juga akan melihat cara menghitung persentil ke-50, persentil ke-90, persentil ke-95 dan ke-n di PostgreSQL, karena mereka umumnya digunakan dalam analisis data.

Cara Menghitung Persentil di PostgreSQL

Kami akan menghitung persentil di PostgreSQL menggunakan percentile_cont fungsi jendela

Katakanlah Anda memiliki tabel berikut penjualan(tanggal_pesanan,jumlah) dan Anda ingin menghitung persentil ke-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

Bonus Baca :Cara Mengisi Tanggal Hilang di PostgreSQL

Berikut kueri untuk menghitung persentil ke-50 di PostgreSQL. Anda dapat menggunakan kueri yang sama untuk menghitung median di PostgreSQL.

postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales;
 percentile_cont
-----------------
           212.5

Dalam kueri di atas, kami menggunakan percentile_cont fungsi jendela yang memungkinkan Anda menentukan persentil apa (mis. 0,5 yaitu persentil ke-50) yang ingin Anda hitung. Kemudian kita juga menggunakan klausa WITHIN GROUP untuk menghitung persentil dalam grup penjualan nilai-nilai. Kami juga menggunakan klausa ORDER BY untuk mengurutkan penjualan nilai sebelum kita menghitung persentil di PostgreSQL.

Saat Anda menggunakan percentile_cont fungsi window, PostgreSQL akan menginterpolasi nilai median sebagai rata-rata dari 2 nilai tengah (210, 215), jika ada 2 nilai tengah. Itu sebabnya ia mengembalikan 212,5

Bonus Baca :Cara Menghitung Moving Average di PostgreSQL

Saat Anda dapat menghitung persentil di PostgreSQL, jika Anda tidak ingin PostgreSQL diinterpolasi tetapi hanya mengembalikan nilai terdekat, gunakan percentile_disc fungsi jendela sebagai gantinya. Ini contohnya

postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales;
 percentile_disc
-----------------
             210

Dalam hal ini, ia akan mengembalikan salah satu nilai tengah, jika ada 2 nilai tengah.

Bonus Baca :Cara Mengimpor File CSV ke PostgreSQL

Cara Menghitung Persentil ke-90 di PostgreSQL

Demikian pula, Anda dapat menghitung persentil ke-90 di PostgreSQL menggunakan percentile_cont. Kami mengubah 0,5 menjadi 0,9 di persentil_cont fungsi

postgres=# SELECT PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_cont
-----------------
255

Anda juga dapat menghitung persentil ke-90 di PostgreSQL menggunakan percentile_disc

postgres=# SELECT PERCENTILE_DISC(0.9) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_disc
-----------------
250

Cara Menghitung Persentil ke-95 di PostgreSQL

Demikian pula, Anda dapat menghitung persentil ke-95 di PostgreSQL, menggunakan percentile_cont

postgres=# SELECT PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_cont
-----------------
277.5

Anda juga dapat menghitung persentil ke-95 di PostgreSQL menggunakan percentile_disc

postgres=# SELECT PERCENTILE_DISC(0.95) WITHIN GROUP(ORDER BY sale) FROM sales;
percentile_disc
-----------------
300

Cara Menghitung Persentil ke-n di PostgreSQL

Demikian pula, Anda dapat menghitung persentil ke-n di PostgreSQL menggunakan percentile_cont. Kami pada dasarnya menyediakan n/100 dalam percentile_cont fungsi

postgres=# SELECT PERCENTILE_CONT(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;

Anda juga dapat menghitung persentil ke-90 di PostgreSQL menggunakan percentile_disc

postgres=# SELECT PERCENTILE_DISC(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;

Setelah menghitung persentil di PostgreSQL, Anda dapat menggunakan Alat Pelaporan PostgreSQL untuk memplot nilai persentil bersama dengan nilai penjualan pada diagram garis untuk menganalisis perbedaan dan juga melakukan penetapan tujuan. Untuk itu kita akan menggabungkan nilai persentil ke-50 yang dihitung dengan penjualan asli tabel seperti di bawah ini

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

Berikut adalah diagram garis yang menunjukkan penjualan harian beserta persentil, diplot menggunakan Ubiq

Jika Anda ingin membuat grafik, dasbor &laporan dari database PostgreSQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mungkin untuk mematikan pemrosesan kutipan dalam perintah Postgres COPY dengan format CSV?

  2. Kesalahan:Tidak dapat membuat TypedQuery untuk kueri dengan lebih dari satu pengembalian

  3. Kueri Postgresql di antara rentang tanggal

  4. Tampilan Drop Postgresql

  5. PostgreSQL 11 - Prosedur