Modifica:
RANK() OVER (PARTITION BY ContenderNum ORDER BY totals ASC) AS xRank
a:
RANK() OVER (ORDER BY totals DESC) AS xRank
Dai un'occhiata a questo esempio:
DEMO SQL Fiddle
Potresti anche voler dare un'occhiata alla differenza tra RANK (Transact-SQL) e DENSE_RANK (Transact-SQL):
GRADO (Transazione-SQL)
Se due o più righe si equivalgono per un rango, ciascuna riga in parità riceve lo stesso rango. Ad esempio, se i due migliori venditori hanno lo stesso valore SalesYTD, sono entrambi classificati uno. Il venditore con il successivo anno più alto SalesYTD è classificato al numero tre, perché ci sono due righe che sono classificate più in alto. Pertanto, la funzione RANK non restituisce sempre interi consecutivi.
DENSE_RANK (Transazione-SQL)
Restituisce il rango delle righe all'interno della partizione di un set di risultati, senza spazi vuoti nella classifica. Il rango di una riga è uno più il numero di ranghi distinti che precedono la riga in questione.