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.