Share via


PERCENT_RANK (Transact-SQL)

Calcula el rango relativo de una fila dentro de un grupo de filas de SQL Server 2012. Use PERCENT_RANK para evaluar la situación relativa de un valor dentro de un conjunto de resultados de la consulta o de una partición. PERCENT_RANK es similar a la función CUME_DIST.

Sintaxis

PERCENT_RANK( )
    OVER ( [ partition_by_clause ] order_by_clause )

Argumentos

  • OVER ( [ partition_by_clause ] order_by_clause**)**
    partition_by_clause divide el conjunto de resultados generado por la cláusula FROM en particiones a las que se aplica la función. Si no se especifica, la función trata todas las filas del conjunto de resultados de la consulta como un único grupo. order_by_clause determina el orden lógico en el que se realiza la operación. Se necesita order_by_clause. La <cláusula rows o range> de la sintaxis OVER no se puede especificar en una función PERCENT_RANK. Para obtener más información, vea OVER (cláusula de Transact-SQL).

Tipos de valor devuelto

float(53)

Comentarios generales

El intervalo de valores devueltos por PERCENT_RANK es mayor que 0 y menor o igual que 1. La primera fila de cualquier conjunto tiene un PERCENT_RANK de 0. Se incluyen valores NULL de forma predeterminada y se tratan como los posibles valores más bajos.

Ejemplos

En el ejemplo siguiente se usa la función CUME_DIST para calcular el percentil de salario de cada empleado dentro de un departamento determinado. El valor devuelto por la función CUME_DIST representa el porcentaje de empleados que tienen un salario menor o igual que el empleado actual del mismo departamento. La función PERCENT_RANK calcula el rango de salario del empleado dentro de un departamento como un porcentaje. La cláusula PARTITION BY se especifica para crear particiones de las filas del conjunto de resultados por departamento. La cláusula ORDER BY de la cláusula OVER ordena las filas de cada partición. La cláusula ORDER BY de la instrucción SELECT ordena las filas del conjunto de resultados completo.

USE AdventureWorks2012;
GO
SELECT Department, LastName, Rate, 
       CUME_DIST () OVER (PARTITION BY Department ORDER BY Rate) AS CumeDist, 
       PERCENT_RANK() OVER (PARTITION BY Department ORDER BY Rate ) AS PctRank
FROM HumanResources.vEmployeeDepartmentHistory AS edh
    INNER JOIN HumanResources.EmployeePayHistory AS e  
    ON e.BusinessEntityID = edh.BusinessEntityID
WHERE Department IN (N'Information Services',N'Document Control') 
ORDER BY Department, Rate DESC;

El conjunto de resultados es el siguiente.

Department             LastName               Rate                  CumeDist               PctRank
---------------------- ---------------------- --------------------- ---------------------- ----------------------
Document Control       Arifin                 17.7885               1                      1
Document Control       Norred                 16.8269               0.8                    0.5
Document Control       Kharatishvili          16.8269               0.8                    0.5
Document Control       Chai                   10.25                 0.4                    0
Document Control       Berge                  10.25                 0.4                    0
Information Services   Trenary                50.4808               1                      1
Information Services   Conroy                 39.6635               0.9                    0.888888888888889
Information Services   Ajenstat               38.4615               0.8                    0.666666666666667
Information Services   Wilson                 38.4615               0.8                    0.666666666666667
Information Services   Sharma                 32.4519               0.6                    0.444444444444444
Information Services   Connelly               32.4519               0.6                    0.444444444444444
Information Services   Berg                   27.4038               0.4                    0
Information Services   Meyyappan              27.4038               0.4                    0
Information Services   Bacon                  27.4038               0.4                    0
Information Services   Bueno                  27.4038               0.4                    0
(15 row(s) affected)

Vea también

Referencia

CUME_DIST (Transact-SQL)