ROW_NUMBER Fonksiyonu

By | 5 Ocak 2016

Veri kümesinde gruplanmış her değer için numerik ve artan bir değer üretir. ROW_NUMBER ile yapacağınız gruplamaya göre numerik sayı ürettirip bunlar arasında top değer ya da kriter ayrımı ile daha karmaşık sorguları daha basit bir şekilde yazabilirsiniz.

Select FirstName,LastName,
ROW_NUMBER() OVER(ORDER BY SalesYTD DESC)
As RowNumber,
SalesYTD,JobTitle
From Sales.vSalesPerson

Yukarı kod ile SalesYTD kolunda en yüksek değerden en düşüğe doğru bir sıralama yaparak row number numerik artan değer vermektedir.

FirstName LastName RowNumber SalesYTD JobTitle
Linda Mitchell 1 4251368,55 Sales Representative
Jae Pak 2 4116871,228 Sales Representative
Michael Blythe 3 3763178,179 Sales Representative
Jillian Carson 4 3189418,366 Sales Representative
Ranjit Varkey Chudukatil 5 3121616,32 Sales Representative
José Saraiva 6 2604540,717 Sales Representative
Shu Ito 7 2458535,617 Sales Representative
Tsvi Reiter 8 2315185,611 Sales Representative
Rachel Valdez 9 1827066,712 Sales Representative
Tete Mensa-Annan 10 1576562,197 Sales Representative
David Campbell 11 1573012,938 Sales Representative
Garrett Vargas 12 1453719,465 Sales Representative
Lynn Tsoflias 13 1421810,924 Sales Representative
Pamela Ansman-Wolfe 14 1352577,133 Sales Representative
Stephen Jiang 15 559697,5639 North American Sales Manager
Amy Alberts 16 519905,932 European Sales Manager
Syed Abbas 17 172524,4512 Pacific Sales Manager

Aşağıdaki kod örneğinde ise ROW_NUMBER fonksiyonuna PARTITION BY eklemesi yaparak JobTitle a göre en yüksek SalesYTD alanı ile sıralama yapacağız.

Select FirstName,LastName,
ROW_NUMBER()
OVER(PARTITION BY JobTitle ORDER BY SalesYTD DESC)
As RowNumber,
SalesYTD,JobTitle
From Sales.vSalesPerson
FirstName LastName RowNumber SalesYTD JobTitle
Amy Alberts 1 519905,932 European Sales Manager
Stephen Jiang 1 559697,5639 North American Sales Manager
Syed Abbas 1 172524,4512 Pacific Sales Manager
Linda Mitchell 1 4251368,55 Sales Representative
Jae Pak 2 4116871,228 Sales Representative
Michael Blythe 3 3763178,179 Sales Representative
Jillian Carson 4 3189418,366 Sales Representative
Ranjit Varkey Chudukatil 5 3121616,32 Sales Representative
José Saraiva 6 2604540,717 Sales Representative
Shu Ito 7 2458535,617 Sales Representative
Tsvi Reiter 8 2315185,611 Sales Representative
Rachel Valdez 9 1827066,712 Sales Representative
Tete Mensa-Annan 10 1576562,197 Sales Representative
David Campbell 11 1573012,938 Sales Representative
Garrett Vargas 12 1453719,465 Sales Representative
Lynn Tsoflias 13 1421810,924 Sales Representative
Pamela Ansman-Wolfe 14 1352577,133 Sales Representative

JobTitle göre gruplama yaptığımız için her yeni Jobtitle veri kümesi 1 den başlamıştır. Buradaki sıralama satış oranlarının yüksekten düşüğe göre olduğundan Row Number alanı 1 olanları sorgu üzerinden çekmemiz sadece en yüksek satışı yapan personelin listesini verecektir.

Category: SQL

Bir Cevap Yazın