SQL PARTISI OLEH Klausa

Sql Partisi Oleh Klausa



Dalam SQL, klausa PARTITION BY memungkinkan kita membagi atau mempartisi kumpulan hasil kueri tertentu ke dalam berbagai grup berdasarkan satu atau lebih kolom. Partisi yang dihasilkan bisa sangat berguna terutama ketika Anda perlu melakukan penghitungan pada setiap partisi (satu per satu) atau menerapkan fungsi agregat dalam setiap grup.

Dalam tutorial ini, kita akan mempelajari cara kerja klausa PARTITION BY di SQL dan menemukan bagaimana kita dapat menggunakannya untuk mempartisi data untuk subset yang lebih terperinci.

Sintaksis:

Mari kita mulai dengan sintaks klausa PARTITION BY. Sintaksnya mungkin bergantung pada konteks di mana Anda menggunakannya, tetapi berikut adalah sintaks umumnya:







PILIH kolom1, kolom2, ...

LEBIH (PARTISI OLEH partisi_kolom1, partisi_kolom2, ...)

DARI nama_tabel

Sintaks yang diberikan mewakili elemen-elemen berikut:



  1. kolom1, kolom2 – Ini mengacu pada kolom yang ingin kita sertakan dalam kumpulan hasil.
  2. PARTITION BY kolom – Klausul ini mendefinisikan bagaimana kita ingin mempartisi atau mengelompokkan data.

Contoh data

Mari kita membuat tabel dasar dengan contoh data untuk mendemonstrasikan cara menggunakan klausa PARTITION BY. Untuk contoh ini, mari buat tabel dasar yang menyimpan informasi produk.



BUAT produk TABEL (
product_id INT KUNCI UTAMA AUTO_INCREMENT,
nama_produk VARCHAR( 255 ),
kategori VARCHAR( 255 ),
harga desimal( 10 , 2 ),
kuantitas INT,
tanggal_kedaluwarsa TANGGAL,
kode batang BESAR
);

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Topi Koki 25cm' ,
'toko roti' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Telur Puyuh - Kalengan' ,
'sepen' ,
17.99 ,
67 ,
'29-09-2023' ,
1708039594250 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Kopi - Telur Nog Capuccino' ,
'toko roti' ,
92.53 ,
10 ,
'22-09-2023' ,
8704051853058 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Pir - Berduri' ,
'toko roti' ,
65.29 ,
48 ,
'23-08-2023' ,
5174927442238 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Pasta - Rambut Malaikat' ,
'sepen' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Anggur - Prosecco Valdobiaddene' ,
'menghasilkan' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Kue - Aneka Mini Prancis' ,
'sepen' ,
36.73 ,
52 ,
'29-05-2023' ,
5963886298051 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Oranye - Kalengan, Mandarin' ,
'menghasilkan' ,
65.0 ,
1 ,
'20-04-2023' ,
6131761721332 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Babi - Bahu' ,
'menghasilkan' ,
55.55 ,
73 ,
'2023-05-01' ,
9343592107125 );

menyisipkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantitas,
tanggal habis tempo,
kode batang)
nilai ( 'Dc Hikiage Hira Huba' ,
'menghasilkan' ,
56.29 ,
53 ,
'14-04-2023' ,
3354910667072 );

Setelah kita memiliki contoh pengaturan data, kita dapat melanjutkan dan menggunakan klausa PARTITION BY.





Penggunaan Dasar

Misalkan kita ingin menghitung total item untuk setiap kategori produk pada tabel sebelumnya. Kita dapat menggunakan PARTITION BY untuk membagi item ke dalam kategori unik dan kemudian menentukan total kuantitas di setiap kategori.

Contohnya adalah sebagai berikut:



PILIH
nama Produk,
kategori,
kuantitas,
SUM(kuantitas) LEBIH DARI (PARTISI BERDASARKAN kategori) SEBAGAI total_item
DARI
produk;

Perhatikan bahwa dalam contoh yang diberikan, kita mempartisi data menggunakan kolom “kategori”. Kami kemudian menggunakan fungsi agregat SUM() untuk menentukan total item di setiap kategori secara terpisah. Hasilnya menunjukkan total item di setiap kategori.

Menggunakan Klausul PARTISI BY

Ringkasnya, kasus penggunaan klausa PARTITION BY yang paling umum adalah bersamaan dengan fungsi jendela. Fungsi jendela diterapkan ke setiap partisi secara terpisah.

Beberapa fungsi jendela yang umum digunakan dengan PARTITION BY meliputi:

  • SUM() – Menghitung jumlah kolom dalam setiap partisi.
  • AVG() – Menghitung rata-rata kolom dalam setiap partisi.
  • COUNT() – Menghitung jumlah baris dalam setiap partisi.
  • ROW_NUMBER() – Tetapkan nomor baris unik untuk setiap baris dalam setiap partisi.
  • RANK() – Tetapkan peringkat untuk setiap baris dalam setiap partisi.
  • DENSE_RANK() – Tetapkan peringkat padat untuk setiap baris dalam setiap partisi.
  • NTILE() – Membagi data menjadi kuantil dalam setiap partisi.

Itu dia!

Kesimpulan

Dalam tutorial ini, kita mempelajari cara bekerja dengan klausa PARTITION BY di SQL untuk mempartisi data menjadi berbagai segmen dan kemudian menerapkan operasi tertentu ke setiap partisi yang dihasilkan secara terpisah.