Para datos:
20 50 50 60 70Si uso RANK obtengo
1 2 2 4 5si uso DENSE_RANK obtengo
1 2 2 3 4Necesito para mi aplicación esto:
1 3 3 4 5Creo que quieres:
rank() over(order by val) + count(*) over(partition by val) - 1En realidad, esto sería más simple redactado con solo un recuento de ventanas:
count(*) over(order by val) select val, count(*) over(order by val) rn from (values (20), (50), (50), (60), (70)) as t(val) order by valvalor | rn --: | -: 20 | 1 50 | 3 50 | 3 60 | 4 70 | 5