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.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzureAzure Synapse Analytics
Endpoint di analisi SQL in Microsoft Fabric
Warehouse in Microsoft Fabric
Database SQL in Microsoft Fabric
Calcola il rango relativo di una riga all'interno di un gruppo di righe in SQL Server. Usare PERCENT_RANK per valutare la posizione relativa di un valore all'interno di un set di risultati o una partizione di query.
PERCENT_RANK è simile alla funzione CUME_DIST .
Sintassi
PERCENT_RANK( )
OVER ( [ partition_by_clause ] order_by_clause )
Argomenti
CAMBIO ( [ partition_by_clause ] order_by_clause )
Il primo parametro, partition_by_clause, divide il set di risultati prodotto dalla FROM clausola in partizioni a cui viene applicata la funzione. Se non specificato, la funzione tratta tutte le righe del set di risultati della query come un unico gruppo. Il secondo parametro, order_by_clause, determina l'ordine logico in cui viene eseguita l'operazione.
order_by_clause è obbligatorio. La <rows or range clause> proprietà della OVER sintassi non può essere specificata in una PERCENT_RANK funzione. Per altre informazioni, vedere Clausola SELECT - OVER.
Tipi restituiti
float(53)
Osservazioni:
L'intervallo di valori restituiti da PERCENT_RANK è maggiore 0 di e minore o uguale a 1. La prima riga in qualsiasi set ha un PERCENT_RANK valore di 0.
NULL i valori sono inclusi per impostazione predefinita e vengono considerati come i valori più bassi possibili.
PERCENT_RANK è non deterministico. Per altre informazioni, vedere Funzioni deterministiche e non deterministiche.
Esempi
Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.
Nell'esempio seguente viene usata la CUME_DIST funzione per calcolare il percentile di stipendio per ogni dipendente all'interno di un determinato reparto. Il valore restituito dalla CUME_DIST funzione rappresenta la percentuale di dipendenti che hanno uno stipendio minore o uguale al dipendente corrente nello stesso reparto. La PERCENT_RANK funzione calcola il rango dello stipendio del dipendente all'interno di un reparto come percentuale. La PARTITION BY clausola viene specificata per partizionare le righe nel set di risultati in base al reparto. La ORDER BY clausola nella OVER clausola ordina le righe in ogni partizione. La ORDER BY clausola nell'istruzione SELECT ordina le righe nell'intero 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