Klausa SQL OVER

Klausa Sql Over



Salah satu ciri SQL yang paling canggih ialah klausa OVER. Ia adalah ciri yang membolehkan kami melakukan pengiraan dan menggunakan fungsi tetingkap SQL pada subset baris tertentu dalam set hasil yang diberikan.

Ia amat berguna apabila anda perlu mengira pengagregatan atau kedudukan untuk kumpulan baris tanpa benar-benar meruntuhkan keseluruhan set hasil.

Sertai kami dalam tutorial ini sambil kami mempelajari segala-galanya yang perlu diketahui untuk membolehkan anda mula bekerja dengan klausa OVER.







Keperluan:

Sebelum kita menyelami kefungsian dan cara kerja klausa OVER, pastikan anda tidak mempunyai asas SQL. Kami juga menganggap bahawa anda mempunyai akses kepada pangkalan data yang boleh anda gunakan untuk menguji pengetahuan anda.



Dalam kes kami, kami akan menggunakan pangkalan data MySQL dengan pangkalan data sampel Sakila. Hanya pastikan anda mempunyai kebenaran yang mencukupi dan enjin pangkalan data anda menyokong fungsi tetingkap.



Sintaks:

Seperti yang kami nyatakan sebelum ini, dalam kebanyakan kes, kami terutamanya menggunakan klausa OVER bersama-sama dengan fungsi tetingkap.





Oleh itu, kita boleh menyatakan sintaks klausa seperti berikut:

(ungkapan) OVER (

[PARTITION BY partition_expression, ...]

[ORDER BY sort_expression [ASC | DESC], ...]

[frame_specification]

)

Dalam sintaks yang diberikan, kita boleh memecahkan setiap komponen seperti berikut:



  1. – Ia merujuk kepada fungsi tetingkap yang ingin kami gunakan pada tetingkap baris tertentu seperti SUM(), AVG(), ROW_NUMBER(), RANK, dsb.
  2. Ungkapan - Ini menentukan lajur atau ungkapan yang mana fungsi tetingkap digunakan.
  3. PARTITION BY – Ini ialah klausa pilihan yang membahagikan set hasil kepada partition di mana setiap partition adalah seperti unit berasingan di mana fungsi digunakan. Baris dalam partition yang sama berkongsi nilai yang sama dalam lajur yang ditentukan.
  4. ORDER BY – Ini menentukan susunan baris dalam setiap partition diproses.
  5. frame_specification - Ini ialah klausa pilihan yang mentakrifkan bingkai baris dalam partition. Spesifikasi bingkai biasa termasuk ROWS ANTARA DAN atau Julat ANTARA DAN

Dengan itu, mari kita terokai beberapa contoh praktikal tentang cara menggunakannya.

Contoh:

Mari kita tunjukkan cara menggunakan klausa menggunakan pangkalan data sampel Sakila. Pertimbangkan contoh di mana kita perlu menentukan jumlah hasil bagi setiap kategori filem.

Kita boleh menggunakan fungsi tetingkap jumlah dengan klausa OVER dan sekumpulan pernyataan gabungan seperti yang ditunjukkan dalam contoh berikut:

PILIH
category.name AS category_name,
filem.tajuk AS filem_tajuk,
filem.kadar_sewa,
SUM(bayaran.jumlah) LEBIH (PARTISITION MENGIKUT kategori.nama) SEBAGAI jumlah_hasil
DARI
filem
SERTAI
kategori_filem HIDUP
filem.id_filem = kategori_filem.id_filem
SERTAI
kategori HIDUP
film_category.category_id = category.category_id
SERTAI
inventori HIDUP
film.film_id = inventori.film_id
SERTAI
sewa HIDUP
inventory.inventory_id = sewa.inventory_id
SERTAI
pembayaran HIDUP
rental.rental_id = bayaran.rental_id
PERINTAH OLEH
Nama kategori,
filem.tajuk;

Dalam pertanyaan yang diberikan, kita mulakan dengan memilih tajuk filem, kadar sewa dan menggunakan ungkapan jumlah (bayaran.jumlah melebihi partition mengikut kategori.nama) untuk menentukan jumlah setiap partition kategori mengikut nama kategori.

Kita mesti menggunakan klausa PARTITION BY untuk memastikan pengiraan jumlah dimulakan semula pada setiap kategori unik.

Output yang terhasil adalah seperti berikut:

Itulah anda mempunyainya!

Kesimpulan

Dalam contoh ini, kami meneroka asas bekerja dengan klausa OVER dalam SQL. Ini bukan klausa asas dan memerlukan kebiasaan sebelumnya dengan ciri SQL yang lain.