W poprzednim poście przedstawiłem funkcję ROW_NUMBER. RANK działa analogicznie z tym, że wierszom o tej samej wartości nadawane są takie same liczby porządkowe. Rozważmy poniższe zapytanie:
select RANK() over(order BY ProductSubCategoryID),ProductSubcategoryID from Production.Product;
Wiersze o takim samym ProductSubCategoryId otrzymają równe wartości a nie kolejne liczby jak w przypadku ROW_NUMBER. Przykładowo zwrócone wiersze:
RANK | ProductSubCategoryId |
1 | 5 |
1 | 5 |
1 | 5 |
4 | 6 |
4 | 6 |
4 | 6 |
Warto zwrócić uwagę, że RANK nie zwraca kolejnych liczb. W przypadku gdy występuje kilka takich samych wartości, wewnętrzny licznik jest zwiększany i powstaje potem luka– na przykładzie jest to 1 a 4 (zamiast 2).
One thought on “Numeracja wierszy w SQL Server – RANK”