sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan bruger du RANK() i SQL Server

Skift:

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

til:

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

Tag et kig på dette eksempel:

SQL Fiddle DEMO

Du vil måske også se på forskellen mellem RANK (Transact-SQL) og DENSE_RANK (Transact-SQL):

RANK (Transact-SQL)

Hvis to eller flere rækker er lige for en rang, får hver lige rækker samme rang. For eksempel, hvis de to topsælgere har den samme SalesYTD-værdi, er de begge rangeret som én. Sælgeren med den næsthøjeste SalgsYTD er rangeret som nummer tre, fordi der er to rækker, der er placeret højere. Derfor returnerer RANK-funktionen ikke altid fortløbende heltal.

DENSE_RANK (Transact-SQL)

Returnerer rangeringen af ​​rækker inden for partitionen af ​​et resultatsæt uden huller i rangeringen. Rangeringen af ​​en række er én plus antallet af distinkte rækker, der kommer før den pågældende række.



  1. Er der en RIGTIG ydelsesforskel mellem INT og VARCHAR primære nøgler?

  2. Opsamling af tæller fra en SQL-forespørgsel

  3. SQL Server-triggere:DML-triggere

  4. Maksimering af databaseforespørgselseffektivitet for MySQL - Anden del