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.





