CUME_DIST (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
Para SQL Server, esta función calcula la distribución acumulativa de un valor en un grupo de valores. Es decir, CUME_DIST
calcula la posición relativa de un valor especificado en un grupo de valores. Suponiendo un orden ascendente, el CUME_DIST
de un valor en la fila r se define como el número de filas con valores menores o iguales que el valor de la fila r, dividido entre el número de filas evaluadas en la partición o el conjunto de resultados de la consulta. CUME_DIST
es similar a la función PERCENT_RANK
.
Convenciones de sintaxis de Transact-SQL
Sintaxis
CUME_DIST( )
OVER ( [ partition_by_clause ] order_by_clause )
Argumentos
OVER ( [ partition_by_clause ] order_by_clause)
El argumento partition_by_clause divide el conjunto de resultados de la cláusula FROM en particiones, a las que se aplica la función. Si no se especifica el argumento partition_by_clause, CUME_DIST
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 tiene lugar la operación. CUME_DIST
requiere order_by_clause. CUME_DIST
no aceptará la <cláusula de filas o rango> de la sintaxis OVER. Para más información, vea Cláusula OVER (Transact-SQL).
Tipos de valores devueltos
float(53)
Observaciones
CUME_DIST
devuelve un intervalo de valores mayor que 0 y menor o igual que 1. Los valores equivalentes siempre se evalúan como el mismo valor de distribución acumulativa. CUME_DIST
incluye valores NULL de forma predeterminada y los trata como los posibles valores más bajos.
CUME_DIST
sea no determinista. Para obtener más información, consulte Deterministic and Nondeterministic Functions.
Ejemplos
En este ejemplo se usa la función CUME_DIST
para calcular el percentil de salario de cada empleado dentro de un departamento determinado. CUME_DIST
devuelve un valor que 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 intervalo de porcentaje de salario del empleado dentro de un departamento. Para crear particiones de las filas del conjunto de resultados por departamento, el ejemplo especifica el valor de partition_by_clause. La cláusula ORDER BY de la cláusula OVER ordena lógicamente las filas de cada partición. La cláusula ORDER BY de la instrucción SELECT determina el orden de presentación del conjunto de resultados.
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
(15 row(s) affected)