Funciones de categoría (Transact-SQL)Ranking Functions (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2012) noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2012) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Las funciones de categoría devuelven un valor de categoría para cada fila de una partición.Ranking functions return a ranking value for each row in a partition. Según la función que se utilice, algunas filas pueden recibir el mismo valor que otras.Depending on the function that is used, some rows might receive the same value as other rows. Las funciones de categoría son no deterministas.Ranking functions are nondeterministic.

Transact-SQLTransact-SQL proporciona las siguientes funciones de categoría:provides the following ranking functions:

RANKRANK NTILENTILE
DENSE_RANKDENSE_RANK ROW_NUMBERROW_NUMBER

EjemplosExamples

En el ejemplo siguiente se muestran las cuatro funciones de categoría usadas en la misma consulta.The following example shows the four ranking functions used in the same query. Consulte cada función de categoría para ver ejemplos específicos de las funciones.For function-specific examples, see each ranking function.

USE AdventureWorks2012;  
GO  
SELECT p.FirstName, p.LastName  
    ,ROW_NUMBER() OVER (ORDER BY a.PostalCode) AS "Row Number"  
    ,RANK() OVER (ORDER BY a.PostalCode) AS Rank  
    ,DENSE_RANK() OVER (ORDER BY a.PostalCode) AS "Dense Rank"  
    ,NTILE(4) OVER (ORDER BY a.PostalCode) AS Quartile  
    ,s.SalesYTD  
    ,a.PostalCode  
FROM Sales.SalesPerson AS s   
    INNER JOIN Person.Person AS p   
        ON s.BusinessEntityID = p.BusinessEntityID  
    INNER JOIN Person.Address AS a   
        ON a.AddressID = p.BusinessEntityID  
WHERE TerritoryID IS NOT NULL AND SalesYTD <> 0;  

El conjunto de resultados es el siguiente.Here is the result set.

FirstNameFirstName LastNameLastName Row NumberRow Number RankRank Dense RankDense Rank QuartileQuartile SalesYTDSalesYTD PostalCodePostalCode
MichaelMichael BlytheBlythe 11 11 11 11 4 557 045,04594557045.0459 9802798027
LindaLinda MitchellMitchell 22 11 11 11 5 200 475,23135200475.2313 9802798027
JillianJillian CarsonCarson 33 11 11 11 3 857 163,63323857163.6332 9802798027
GarrettGarrett VargasVargas 44 11 11 11 1 764 938,98591764938.9859 9802798027
TsviTsvi ReiterReiter 55 11 11 22 2 811 012,71512811012.7151 9802798027
ShuShu ItoIto 66 66 22 22 3 018 725,48583018725.4858 9805598055
JoséJosé SaraivaSaraiva 77 66 22 22 3 189 356,24653189356.2465 9805598055
DavidDavid CampbellCampbell 88 66 22 33 3 587 378,42573587378.4257 9805598055
TeteTete Mensa AnnanMensa-Annan 99 66 22 33 1 931 620,18351931620.1835 9805598055
LynnLynn TsofliasTsoflias 1010 66 22 33 1 758 385,9261758385.926 9805598055
RachelRachel ValdezValdez 1111 66 22 44 2 241 204,04242241204.0424 9805598055
JaeJae PakPak 1212 66 22 44 5 015 682,37525015682.3752 9805598055
RanjitRanjit Varkey ChudukatilVarkey Chudukatil 1313 66 22 44 3 827 950,2383827950.238 9805598055

Consulte tambiénSee Also

Funciones integradas (Transact-SQL) Built-in Functions (Transact-SQL)
OVER (cláusula de Transact-SQL)OVER Clause (Transact-SQL)