Persentil SQL

Persentil Sql



Apakah dua perkataan biasa yang berkait rapat sehingga anda rasa ia adalah sama? Bagi kami pembangun pangkalan data, ia akan menjadi pangkalan data dan statistik SQL.

Salah satu pengiraan statistik biasa yang muncul walaupun dalam pentadbiran pangkalan data ialah persentil.

Persentil ialah ukuran statistik yang membolehkan kami membahagikan set data kepada bahagian segmen yang sama. Peranan persentil adalah untuk memberikan gambaran tentang pengagihan data iaitu cara kita memahami cara nilai disebarkan.







Dalam tutorial ini, kita akan belajar bagaimana kita boleh mengira persentil dalam SQL untuk membahagikan data kepada pelbagai segmen.



Contoh Jadual

Mari kita mulakan dengan menyediakan jadual asas yang mengandungi data sampel untuk tujuan demonstrasi. Ini membantu kita untuk menggambarkan bagaimana pelbagai kaedah pengiraan persentil berkelakuan dan output yang terhasil.



Mari kita buat jadual yang dipanggil 'produk' yang mengandungi maklumat barangan runcit. Klausa 'buat jadual' adalah seperti berikut:





CIPTA produk JADUAL (

product_id INT PRIMARY KUNCI AUTO_INCREMENT,

nama_produk VARCHAR( 255 ),

kategori VARCHAR( 255 ),

harga PERPULUHAN( 10 , 2 ),

kuantiti INT,

tarikh tamat tempoh DATE,

kod bar BIGINT

);

Setelah kami membuat jadual, kami boleh meneruskan dan menambah data sampel ke dalam jadual. Kita boleh menggunakan pernyataan 'masukkan' berikut:

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ( 'Topi Chef 25cm' ,
'kedai roti' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ( 'Telur Puyuh - Dalam Tin' ,
'pantry' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ( 'Kopi - Egg Nog Capuccino' ,
'kedai roti' ,
92.53 ,
10 ,
'22-09-2023' ,
8704051853058 );

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ( 'Pear - Berduri' ,
'kedai roti' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ( 'Pasta - Rambut Malaikat' ,
'pantry' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ( 'Wain - Prosecco Valdobiaddene' ,
'menghasilkan' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Pada akhirnya, anda harus mempunyai jadual seperti berikut:



Persentil SQL

Seperti yang anda boleh meneka, cara mengira persentil mungkin berbeza bergantung pada enjin pangkalan data. Walau bagaimanapun, kaedah yang paling biasa adalah menggunakan fungsi PERCENTILE_DISC() dan PERCENTILE_CONT().

Fungsi ini adalah sebahagian daripada spesifikasi Standard SQL (2003). Oleh itu, ia pasti akan disokong oleh PostgreSQL dan Oracle.

PERCENTILE_CONT()

Mari kita mulakan dengan fungsi PERCENTILE_CONT(). Fungsi ini membolehkan kami mengira nilai persentil sebagai pecahan set data.

Fungsi ini mengembalikan nilai interpolasi yang mungkin tidak tepat pada titik data tertentu dalam set data anda.

Sintaks fungsi adalah seperti berikut:

PERCENTILE_CONT(percentile) DALAM KUMPULAN ( PESANAN OLEH nama_lajur) OVER ();

Fungsi ini menerima parameter berikut:

  • Persentil – Ia menentukan nilai persentil yang diingini (0.0 hingga 1.0).
  • column_name - Ia menandakan lajur yang kami ingin mengira persentil.
  • OVER () – Ia menetapkan fungsi tetingkap untuk menentukan keseluruhan set data.

Contoh cara menggunakan fungsi ini adalah seperti berikut:

PILIH

PERCENTILE_CONT( 0.5 ) DALAM KUMPULAN ( PESANAN MENGIKUT harga) LEBIH () SEBAGAI median

DARI

produk;

Nota: Pertanyaan yang diberikan hanya berfungsi dalam PostgreSQL kerana MySQL tidak menyokong penggunaan WITHIN GROUP.

Ini mengira 50 ke persentil data yang disediakan.

PERCENTILE_DISC()

Kita boleh menggunakan fungsi PERCENTILE_DISC() untuk mengira nilai persentil sebagai nilai diskret terus daripada set data.

Fungsi ini mengembalikan nilai yang sepadan dengan titik data sebenar.

Sintaks fungsi adalah seperti berikut (PostgreSQL):

PERCENTILE_DISC(percentile) DALAM KUMPULAN ( PESANAN OLEH nama_lajur) OVER ();

Contoh output adalah seperti berikut:

PILIH

PERCENTILE_DISC( 0.25 ) DALAM KUMPULAN ( PESANAN MENGIKUT harga) LEBIH () SEBAGAI persentil_25

DARI

produk;

Ini sepatutnya mengira 25 ke persentil data.

Kesimpulan

Tutorial ini merangkumi cara menggunakan pelbagai fungsi untuk mengira persentil dalam pangkalan data SQL.