Klausa SQL OVER

Klausa Sql Over



Salah satu fitur paling canggih dari SQL adalah klausa OVER. Ini adalah fitur yang memungkinkan kita melakukan perhitungan dan menerapkan fungsi jendela SQL pada subset baris tertentu dalam kumpulan hasil tertentu.

Hal ini sangat berguna ketika Anda perlu menghitung agregasi atau peringkat untuk kelompok baris tanpa benar-benar menciutkan seluruh kumpulan hasil.

Bergabunglah dengan kami dalam tutorial ini saat kami mempelajari segala hal yang perlu diketahui untuk membantu Anda mulai bekerja dengan klausa OVER.







Persyaratan:

Sebelum kita mendalami fungsionalitas dan cara kerja klausa OVER, pastikan Anda sudah memahami dasar-dasar SQL. Kami juga berasumsi bahwa Anda memiliki akses ke database yang dapat Anda gunakan untuk menguji pengetahuan Anda.



Dalam kasus kami, kami akan menggunakan database MySQL dengan database sampel Sakila. Pastikan Anda memiliki izin yang memadai dan mesin database Anda mendukung fungsi jendela.



Sintaksis:

Seperti yang kami sebutkan sebelumnya, dalam banyak kasus, kami terutama menggunakan klausa OVER bersama dengan fungsi jendela.





Dengan demikian, kita dapat menyatakan sintaks klausa sebagai berikut:

(ekspresi) OVER (

[PARTISI OLEH partisi_ekspresi, ...]

[ORDER BERDASARkan sort_ekspresi [ASC | DES], ...]

[spesifikasi_bingkai]

)

Dalam sintaks yang diberikan, kita dapat memecah setiap komponen sebagai berikut:



  1. – Mengacu pada fungsi jendela yang ingin kita terapkan pada jendela baris tertentu seperti SUM(), AVG(), ROW_NUMBER(), RANK, dll.
  2. Ekspresi – Ini menentukan kolom atau ekspresi dimana fungsi jendela diterapkan.
  3. PARTITION BY – Ini adalah klausa opsional yang membagi kumpulan hasil menjadi beberapa partisi di mana setiap partisi seperti unit terpisah tempat fungsi tersebut diterapkan. Baris dalam partisi yang sama berbagi nilai yang sama di kolom tertentu.
  4. ORDER BY – Ini menentukan urutan pemrosesan baris di setiap partisi.
  5. frame_spesification – Ini adalah klausa opsional yang mendefinisikan bingkai baris dalam partisi. Spesifikasi rangka umum mencakup BARIS ANTARA DAN atau RANGE ANTARA DAN

Mari kita jelajahi beberapa contoh praktis tentang cara menggunakannya.

Contoh:

Mari kita tunjukkan cara menggunakan klausa menggunakan database sampel Sakila. Perhatikan contoh di mana kita perlu menentukan total pendapatan untuk setiap kategori film.

Kita dapat menggunakan fungsi jendela penjumlahan dengan klausa OVER dan sekumpulan pernyataan join seperti yang ditunjukkan pada contoh berikut:

PILIH
kategori.nama SEBAGAI nama_kategori,
film.judul SEBAGAI film_title,
film.rental_rate,
SUM(pembayaran.jumlah) LEBIH DARI (PARTISI BERDASARKAN kategori.nama) SEBAGAI total_pendapatan
DARI
film
BERGABUNG
kategori_film AKTIF
film.film_id = film_category.film_id
BERGABUNG
kategori AKTIF
film_category.category_id = kategori.category_id
BERGABUNG
inventaris AKTIF
film.film_id = inventaris.film_id
BERGABUNG
sewa AKTIF
inventaris.inventory_id = sewa.inventory_id
BERGABUNG
pembayaran AKTIF
rental.rental_id = pembayaran.rental_id
DIPESAN OLEH
Nama Kategori,
film.judul;

Dalam kueri yang diberikan, kita mulai dengan memilih judul film, tarif sewa, dan menggunakan ekspresi jumlah (pembayaran.jumlah atas partisi berdasarkan nama kategori) untuk menentukan jumlah setiap partisi kategori berdasarkan nama kategori.

Kita harus menggunakan klausa PARTITION BY untuk memastikan bahwa penghitungan jumlah dimulai ulang pada setiap kategori unik.

Output yang dihasilkan adalah sebagai berikut:

Itu dia!

Kesimpulan

Dalam contoh ini, kita mengeksplorasi dasar-dasar bekerja dengan klausa OVER di SQL. Ini bukan klausa dasar dan memerlukan pemahaman sebelumnya tentang fitur SQL lainnya.