Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak używać RANK() w SQL Server

Zmień:

RANK() OVER (PARTITION BY ContenderNum ORDER BY totals ASC) AS xRank

do:

RANK() OVER (ORDER BY totals DESC) AS xRank

Spójrz na ten przykład:

DEMO SQL Fiddle

Możesz również przyjrzeć się różnicy między RANK (Transact-SQL) a DENSE_RANK (Transact-SQL):

RANKING (Transact-SQL)

Jeśli dwa lub więcej rzędów remisuje pod względem rangi, każdy z remisujących rzędów otrzymuje tę samą rangę. Na przykład, jeśli dwaj najlepsi sprzedawcy mają tę samą wartość SalesYTD, obaj zajmują pierwsze miejsce. Sprzedawca z kolejnym najwyższym wynikiemSprzedażYTD zajmuje trzecie miejsce, ponieważ są dwa wiersze, które mają wyższą pozycję. Dlatego funkcja RANK nie zawsze zwraca kolejne liczby całkowite.

DENSE_RANK (Transact-SQL)

Zwraca rangę wierszy w ramach partycji zestawu wyników, bez żadnych przerw w rankingu. Pozycja rzędu to jeden plus liczba odrębnych pozycji poprzedzających dany rząd.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamiczny obrót T-SQL

  2. Jak zwrócić tylko wartości liczbowe w SQL Server

  3. Trzy najważniejsze trendy wpływające na administratorów baz danych odpowiedzialnych za monitorowanie SQL Server

  4. Szkodliwe, wszechobecne mity dotyczące wydajności SQL Server

  5. Połącz SQL Server z SugarCRM