Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Calcola la distribuzione cumulativa di un valore in un gruppo di valori in SQL Server 2012. ovvero CUME_DIST calcola la posizione relativa di un valore specificato in un gruppo di valori. Per una riga r, assumendo un ordine crescente, il risultato di CUME_DIST applicato a r è il numero di righe con valori minori di o uguali al valore di r, diviso per il numero di righe valutato nella partizione o nel set di risultati della query. CUME_DIST è simile alla funzione PERCENT_RANK.
Sintassi
CUME_DIST( )
OVER ( [ partition_by_clause ] order_by_clause )
Argomenti
- OVER ( [ partition_by_clause ] order_by_clause**)**
partition_by_clause suddivide il set di risultati generato dalla clausola FROM in partizioni alle quali viene applicata la funzione. Se non specificato, la funzione tratta 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. La clausola <ROWS o RANGE> della sintassi OVER non può essere specificata in una funzione CUME_DIST. Per ulteriori informazioni, vedere Clausola OVER (Transact-SQL).
Tipi restituiti
float(53)
Osservazioni generali
L'intervallo di valori restituiti da CUME_DIST è maggiore di 0 e minore o uguale a 1. I valori restituiscono sempre lo stesso valore di distribuzione cumulativo. I valori NULL sono inclusi per impostazione predefinita e vengono trattati come i valori minori consentiti.
Esempi
Nell'esempio seguente viene utilizzata la funzione CUME_DIST per calcolare il percentile del salario per ogni dipendente all'interno di un reparto specificato. Il valore restituito dalla funzione CUME_DIST rappresenta la percentuale di dipendenti che dispongono di un salario minore o uguale al dipendente corrente nello stesso reparto. La funzione PERCENT_RANK calcola il rango percentuale dello stipendio del dipendente in un reparto. La clausola PARTITION BY è specificata per suddividere le righe nel set di risultati in base al reparto. La clausola ORDER BY specificata nella clausola OVER ordina le righe in ogni partizione in modo logico. La clausola ORDER BY nell'istruzione SELECT determina l'ordine di visualizzazione del set di risultati.
USE AdventureWorks2012;
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;
Set di risultati:
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)