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