У меня есть набор данных, в котором мне нужно ранжировать строки по столбцу оценки. Очевидный ответ заключается в использовании ROW_NUMBER()
:SQL-запрос для ранжирования позиций
select ID, Name, Score, ROW_NUMBER() over (order by Score desc) as Rank
from MyTable
order by Score desc
но есть улов. Если две записи имеют одинаковый балл, то они должны иметь одинаковый ранг, а запись, которая приходит после них, должна пропустить назад, чтобы отразить их естественный порядок, например.
ID Name Score Rank
--- ---- ----- ----
13 Fred 47 1
77 Bob 36 2
88 Harry 36 2
10 John 23 4
Каков наилучший способ для этого?
Использовать ранг или DENSE_RANK –