Condividi tramite


CUME_DIST (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Per SQL Server, questa funzione calcola la distribuzione cumulativa di un valore in un gruppo di valori, ovvero CUME_DIST calcola la posizione relativa di un valore specificato in un gruppo di valori. Presumendo un ordine crescente, la funzione CUME_DIST di un valore nella riga r viene definito come il numero di righe con valori inferiori o uguali a tale valore nella riga r, diviso per il numero di righe valutato nella partizione o nel set di risultati della query. CUME_DIST è simile alla funzione PERCENT_RANK.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

CUME_DIST( )  
    OVER ( [ partition_by_clause ] order_by_clause )  

Argomenti

OVER ( [ partition_by_clause ] order_by_clause)

partition_by_clause divide il set di risultati della clausola FROM in partizioni, alle quali viene applicata la funzione. Se l'argomento partition_by_clause non viene specificato, CUME_DIST considera tutte le righe del set di risultati della query come un unico gruppo. order_by_clause determina l'ordine logico in cui viene eseguita l'operazione. order_by_clause è obbligatorio per CUME_DIST. CUME_DIST non accetterà la <clausola rows o range> della sintassi OVER. Per altre informazioni, vedere Clausola OVER (Transact-SQL).

Tipi restituiti

float(53)

Osservazioni:

CUME_DIST restituisce un intervallo di valori superiori a 0 e inferiori o uguali a 1. I valori restituiscono sempre lo stesso valore di distribuzione cumulativo. CUME_DIST include valori NULL per impostazione predefinita e li tratta come i valori minori consentiti.

CUME_DIST è non deterministico. Per altre informazioni, vedere Funzioni deterministiche e non deterministiche.

Esempi

Questo esempio usa la funzione CUME_DIST per calcolare il percentile del salario per ogni dipendente all'interno di un reparto specificato. CUME_DIST restituisce un valore che rappresenta la percentuale di dipendenti con un salario minore o uguale al dipendente corrente nello stesso reparto. La funzione PERCENT_RANK calcola il rango percentile dello stipendio del dipendente in un reparto. Per partizionare le righe del set di risultati in base al reparto, l'esempio specifica il valore partition_by_clause. La clausola ORDER BY della clausola OVER ordina le righe in ogni partizione in modo logico. La clausola ORDER BY dell'istruzione SELECT determina l'ordine di visualizzazione del set di risultati.

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;  

Il set di risultati è il seguente.

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)  

Vedi anche

PERCENT_RANK (Transact-SQL)