COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
28/ 65

İleri sorgu teknikleri

Window functions, OVER ve PARTITION BY

Satırları kaybetmeden grup bilgisi ekle.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

GROUP BY satırları özetler; window fonksiyonları detay satırlarını koruyarak ilgili pencere üzerinde hesap yapar. OVER, partition, sıralama ve gerektiğinde frame tanımlar. PARTITION BY hesaplamayı her anahtar grubu için yeniden başlatır.

Window ORDER BY ile sorgunun en son ORDER BY’ı farklı görevlerdedir: biri hesaplama sırasını, diğeri görüntü sırasını belirler. Window ifadeleri WHERE’de doğrudan filtrelenemez; CTE veya alt sorgu katmanı gerekir. Frame varsayımlarını özellikle toplam ve FIRST/LAST_VALUE işlemlerinde açık kur.

Pencere ifadesi çıktı sütunu olarak hesaplanır; orijinal satırları JOIN gibi çoğaltmaz. Sıralama eşitliklerini benzersiz anahtarla çözmek ROW_NUMBER için yararlı olsa da rank eşitliklerinin anlamını değiştirebilir.

NERESİNDE KULLANIRSIN?

Kategori ortalamasını ürün satırında veya müşteri toplamını sipariş satırında göstermek için.

SIK YAPILAN HATA

Window ORDER BY’ın tüm sonucu görüntü sırasına soktuğunu sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT ProductName, Price, AVG(Price) OVER () AS OverallAverage FROM lab.Product;

Yedi ürün satırı korunur ve her birinde genel ortalama bulunur.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

Her ürün satırına kategori ürün sayısını ekle.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT ProductName, Category, COUNT(*) OVER (PARTITION BY Category) AS CategoryCount FROM lab.Product;

Electronics satırlarının her birinde 5 görünür; satırlar gruplanıp kaybolmaz.