Как указывает @Mureinik, вы можете просто генерировать рейтинг на лету. Однако, если вам нужно сохранить его (возможно, из соображений производительности), вы можете обновить таблицу, используя CTE, с новыми рангами:
WITH ranks AS (
SELECT studentid, RANK() OVER (ORDER BY studentscore DESC) AS [rank]
FROM students
)
UPDATE s
SET s.[rank] = r.[rank]
FROM students s
JOIN ranks r ON s.studentid = r.studentid
После обновления значений studentscore
для studentid
1 и 5, это вывод:
studentid studentscore rank
1 78 5
2 80 4
3 90 2
4 94 1
5 77 6
6 88 3
Демо на dbfiddle