SQL OVER Maddesi

Sql Over Maddesi



SQL'in en gelişmiş özelliklerinden biri OVER cümlesidir. Belirli bir sonuç kümesi içindeki belirli bir satır alt kümesi üzerinde hesaplamalar yapmamızı ve SQL pencere işlevlerini uygulamamızı sağlayan bir özelliktir.

Sonuç kümesinin tamamını daraltmadan, satır grupları için toplamaları veya sıralamaları hesaplamanız gerektiğinde özellikle kullanışlıdır.

OVER cümleciğiyle çalışmaya başlamanıza yardımcı olacak bilmeniz gereken her şeyi öğreneceğimiz bu eğitimde bize katılın.







Gereksinimler:

OVER cümlesinin işlevselliğine ve işleyişine dalmadan önce, SQL'in temellerini bir kenara bıraktığınızdan emin olun. Ayrıca bilginizi test etmek için kullanabileceğiniz bir veritabanına erişiminizin olduğunu da varsayıyoruz.



Bizim durumumuzda MySQL veritabanını Sakila örnek veritabanıyla birlikte kullanacağız. Yeterli izinlere sahip olduğunuzdan ve veritabanı motorunuzun pencere işlevlerini desteklediğinden emin olun.



Sözdizimi:

Daha önce de belirttiğimiz gibi çoğu durumda OVER cümleciğini pencere işlevleriyle birlikte kullanırız.





Buna göre cümlenin sözdizimini şu şekilde ifade edebiliriz:

(ifade) OVER (

[PARTITION BY partition_expression, ...]

[ORDER BY sıralama_ifadesi [ASC | DESC], ...]

[çerçeve_belirtimi]

)

Verilen sözdiziminde, her bir bileşeni aşağıdaki gibi parçalayabiliriz:



  1. – SUM(), AVG(), ROW_NUMBER(), RANK vb. gibi belirli bir satır penceresi üzerinde uygulamak istediğimiz pencere işlevini ifade eder.
  2. İfade – Bu, pencere işlevinin uygulandığı bir sütunu veya ifadeyi belirtir.
  3. PARTITION BY – Bu, sonuç kümesini, her bölümün işlevin uygulandığı ayrı bir birim gibi olduğu bölümlere bölen isteğe bağlı bir maddedir. Aynı bölümdeki satırlar, belirtilen sütunlarda aynı değerleri paylaşır.
  4. ORDER BY – Bu, her bölümdeki satırların işlenme sırasını belirtir.
  5. çerçeve_belirtimi – Bu, bölüm içindeki satırların çerçevesini tanımlayan isteğe bağlı bir cümledir. Yaygın çerçeve özellikleri arasında VE ARASINDAKİ SATIRLAR veya VE

Bunu bir kenara bırakarak, nasıl kullanılacağına dair bazı pratik örnekleri inceleyelim.

Örnek:

Sakila örnek veritabanını kullanarak cümlenin nasıl kullanılacağını gösterelim. Her film kategorisi için toplam geliri belirlememiz gereken bir örneği düşünün.

Aşağıdaki örnekte gösterildiği gibi toplam pencere işlevini OVER cümleciği ve bir grup join ifadesiyle birlikte kullanabiliriz:

SEÇME
kategori.adı AS kategori_adı,
film.title AS film_title,
film.rental_rate,
SUM(ödeme.tutarı) OVER (kategori.ada göre BÖLÜM) AS toplam_gelir
İTİBAREN
film
KATILMAK
film_category AÇIK
film.film_id = film_category.film_id
KATILMAK
kategori AÇIK
film_category.category_id =category.category_id
KATILMAK
envanter AÇIK
film.film_id = envanter.film_id
KATILMAK
kiralama AÇIK
envanter.inventory_id = kiralama.inventory_id
KATILMAK
ödeme AÇIK
kiralama.rental_id = ödeme.rental_id
TARAFINDAN SİPARİŞ
Kategori adı,
film başlığı;

Verilen sorguda filmin başlığını, kiralama ücretini seçerek başlıyoruz ve toplam (kategori.adı ile bölüm üzerinden ödeme.tutarı) ifadesini kullanarak her kategori bölümünün toplamını kategori adına göre belirliyoruz.

Toplamın hesaplanmasının her benzersiz kategoride yeniden başlatılmasını sağlamak için PARTITION BY yan tümcesini kullanmalıyız.

Sonuçta ortaya çıkan çıktı aşağıdaki gibidir:

İşte aldın!

Çözüm

Bu örnekte SQL'de OVER cümlesiyle çalışmanın temellerini araştırdık. Bu temel bir cümle değildir ve diğer SQL özelliklerine önceden aşina olmayı gerektirir.