Compartir por


PERCENT_RANK (Transact-SQL)

Se aplica a: SQL Server Base de datos de Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Punto de conexión de análisis SQL en Microsoft Fabric Almacén en Microsoft Fabric

Calcula el rango relativo de una fila dentro de un grupo de filas de SQL Server. Use PERCENT_RANK para evaluar la posición relativa de un valor dentro de un conjunto de resultados de consulta o 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 )

El primer parámetro, partition_by_clause, divide el conjunto de resultados generado por la FROM cláusula 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. El segundo parámetro, order_by_clause, determina el orden lógico en el que se realiza la operación. order_by_clause es obligatorio. No <rows or range clause> se puede especificar la OVER sintaxis en una PERCENT_RANK función. Para obtener más información, vea SELECT - OVER Clause.

Tipos de valores devueltos

float(53)

Comentarios

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

PERCENT_RANK sea no determinista. Para más información, vea Funciones deterministas y no deterministas.

Ejemplos

Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022 o AdventureWorksDW2022, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.

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

USE AdventureWorks2022;
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;

Este es el conjunto de resultados.

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