CUME_DIST (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento 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 )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulta la Documentación de versiones anteriores.

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;  

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)  

Consulte también

PERCENT_RANK (Transact-SQL)