Partilhar via


CUME_DIST (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Para o SQL Server, esta função calcula a distribuição cumulativa de um valor dentro de um grupo de valores. Por outras palavras, CUME_DIST calcula a posição relativa de um valor especificado num grupo de valores. Assumindo uma ordem crescente, o CUME_DIST de um valor na linha r é definido como o número de linhas com valores menores ou iguais a esse valor na linha r, dividido pelo número de linhas avaliadas no conjunto de resultados da partição ou consulta. CUME_DIST é semelhante à PERCENT_RANK função.

Transact-SQL convenções de sintaxe

Sintaxe

CUME_DIST( )  
    OVER ( [ partition_by_clause ] order_by_clause )  

Arguments

TERMINADO ( [ partition_by_clause ] order_by_clause)

A partition_by_clause divide o conjunto de resultados da cláusula FROM em partições, às quais a função é aplicada. Se o argumento partition_by_clause não for especificado, CUME_DIST trata todas as linhas do conjunto de resultados da consulta como um único grupo. O order_by_clause determina a ordem lógica em que a operação ocorre. CUME_DIST Requer o order_by_clause. CUME_DIST não aceita a <cláusula> de linhas ou de intervalo da sintaxe OVER. Para mais informações, consulte a Cláusula OVER (Transact-SQL).

Tipos de devolução

Flutuar (53)

Observações

CUME_DIST devolve um intervalo de valores maiores que 0 e menores ou iguais a 1. Os valores de ligação avaliam sempre o mesmo valor cumulativo de distribuição. CUME_DIST inclui valores NULL por defeito e trata estes valores como os valores mais baixos possíveis.

CUME_DIST é não determinística. Para mais informações, consulte Funções Determinísticas e Não Determinísticas.

Examples

Este exemplo utiliza a CUME_DIST função para calcular o percentil salarial de cada colaborador dentro de um dado departamento. CUME_DIST devolve um valor que representa a percentagem de funcionários com salário inferior ou igual ao do atual empregado do mesmo departamento. A PERCENT_RANK função calcula a percentagem de classificação do salário do funcionário dentro de um departamento. Para particionar o conjunto de resultados por departamento, o exemplo especifica o valor partition_by_clause . A cláusula ORDER BY da cláusula OVER ordena logicamente as linhas em cada partição. A cláusula ORDER BY da instrução SELECT determina a ordem de exibição do 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;  

Aqui está o 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)  

Consulte também

PERCENT_RANK (Transact-SQL)