Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Endpoint de analítica SQL en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL 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
CAMBIO ( [ 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 este artículo usan la base de datos de ejemplo de AdventureWorks2025 o AdventureWorksDW2025, que puede descargar de la página principal de Ejemplos de Microsoft SQL Server y proyectos de comunidad.
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