MSSQL Dersleri #14: Window (Pencere) Fonksiyonları

Window (Pencere) Fonksiyonları: ROW_NUMBER, RANK, DENSE_RANK ve NTILE

Window fonksiyonları, SQL Server’da veri kümesinde belirli bir pencere veya bölgenin üzerinde hesaplamalar gerçekleştirmenizi sağlar. Bu fonksiyonlar, verilerin sıralanmasına, gruplanmasına ve analiz edilmesine yardımcı olur. Bu makalede, ROW_NUMBER, RANK, DENSE_RANK ve NTILE window fonksiyonlarını inceleyeceğiz.

ROW_NUMBER

ROW_NUMBER fonksiyonu, bir pencere içindeki her satır için benzersiz bir numara atar. Bu numara, pencerenin sıralama düzenine göre atanır.

-- ROW_NUMBER örneği
SELECT 
    FirstName, 
    LastName, 
    ROW_NUMBER() OVER (ORDER BY LastName, FirstName) AS RowNum
FROM 
    Employees;Code language: SQL (Structured Query Language) (sql)

Yukarıdaki kod, Employees tablosundaki her çalışan için bir satır numarası atar. Satırlar, LastName ve FirstName’e göre alfabetik olarak sıralanır.

RANK

RANK fonksiyonu, bir pencere içindeki her satır için bir sıra numarası atar. Aynı değerlere sahip satırlar aynı sıra numarasına sahip olur. Ancak, bir sonraki sıra numarası, atlanan sayılarla birlikte artar.

-- RANK örneği
SELECT 
    FirstName, 
    LastName, 
    Salary, 
    RANK() OVER (ORDER BY Salary DESC) AS SalaryRank
FROM 
    Employees;Code language: SQL (Structured Query Language) (sql)

Yukarıdaki kod, Employees tablosundaki her çalışan için maaşlarına göre bir sıra numarası atar. Aynı maaşlara sahip çalışanlar aynı sıra numarasına sahip olur.

DENSE_RANK

DENSE_RANK fonksiyonu, bir pencere içindeki her satır için bir sıra numarası atar. Aynı değerlere sahip satırlar aynı sıra numarasına sahip olur. Ancak, bir sonraki sıra numarası, atlanan sayılar olmadan artar.

-- DENSE_RANK örneği
SELECT 
    FirstName, 
    LastName, 
    Salary, 
    DENSE_RANK() OVER (ORDER BY Salary DESC) AS SalaryDenseRank
FROM 
    Employees;Code language: SQL (Structured Query Language) (sql)

Yukarıdaki kod, Employees tablosundaki her çalışan için maaşlarına göre bir sıra numarası atar. Aynı maaşlara sahip çalışanlar aynı sıra numarasına sahip olur.

NTILE

NTILE fonksiyonu, bir pencere içindeki satırları belirli bir sayıda gruplara böler. Her grup için bir sıra numarası atar.

-- NTILE örneği
SELECT 
    FirstName, 
    LastName, 
    Salary, 
    NTILE(4) OVER (ORDER BY Salary DESC) AS SalaryNTile
FROM 
    Employees;Code language: SQL (Structured Query Language) (sql)

Yukarıdaki kod, Employees tablosundaki her çalışan için maaşlarına göre dört grup oluşturur. Her grup için bir sıra numarası atar.

💡 Kıdemli DBA Triki: Window fonksiyonlarını kullanırken, pencerenin sıralama düzenini dikkatli olarak belirlemelisiniz. Yanlış bir sıralama düzeni, sonuçları beklenmedik şekilde etkileyebilir.
⚠️ Canlı Ortam Uyarısı: Window fonksiyonlarını kullanırken, performansı dikkatli olarak izlemelisiniz. Büyük veri kümeleri üzerinde window fonksiyonlarını kullanmak, performansı etkileyebilir.
NasuhAkay
NasuhAkay

Nasuh Akay, 20 yılı aşkın IT deneyimine sahip; kurumsal teknoloji çözümleri, ERP sistemleri, yazılım geliştirme, veri yönetimi ve dijital dönüşüm alanlarında çalışmalar yürüten bir teknoloji profesyonelidir.

Kariyeri boyunca farklı sektörlerde edindiği deneyimlerini; teknoloji, yazılım, veri mimarisi ve iş süreçlerinin geliştirilmesi üzerine yoğunlaştırmıştır.

Bu blogda ERP çözümleri, SQL Server, yazılım geliştirme, yapay zekâ, dijital dönüşüm ve teknoloji dünyasındaki gelişmeler üzerine bilgi, deneyim ve teknik paylaşımlarını okuyucularla buluşturmaktadır.

Amacı, karmaşık teknik konuları anlaşılır bir dille ele almak, gerçek hayatta karşılaşılan problemlere yönelik uygulanabilir çözümler sunmak ve teknoloji alanındaki bilgi birikimini paylaşmaktır.

Articles: 755

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir