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:
masukkanke 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:
PILIHPERCENTILE_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:
PILIHPERCENTILE_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.