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)