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 Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di analisi (PDW)
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
Calcola un percentile in base a una distribuzione continua del valore della colonna nel motore di database di SQL Server. Il risultato viene interpolato e potrebbe non essere uguale a uno dei valori specifici nella colonna.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Argomenti
numeric_literal
Percentile da calcolare. Il valore deve essere compreso tra 0.0 e 1.0.
ALL'INTERNO DEL GRUPPO ( ORDINE PER order_by_expression )
Specifica un elenco di valori numerici per ordinare e calcolare il percentile. È consentito un solo order_by_expression. L'espressione deve restituire un tipo numerico esatto o approssimato, con nessun altro tipo di dati consentito. I tipi numerici esatti sono int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney e money. I tipi numerici approssimati sono float e real. Per impostazione predefinita, l'ordinamento è crescente.
CAMBIO ( <partition_by_clause> )
Divide il set di risultati prodotto dalla FROM clausola in partizioni a cui viene applicata la funzione percentile. Per altre informazioni, vedere Clausola SELECT - OVER. La ORDER BY clausola e <rows or range clause> la OVER sintassi non possono essere specificate in una PERCENTILE_CONT funzione.
Tipi restituiti
float(53)
Informazioni sulla compatibilità
WITHIN GROUP è una parola chiave riservata, a partire dal livello 110di compatibilità . Per altre informazioni, vedere Livello di compatibilità ALTER DATABASE.
Osservazioni:
Tutti i valori Null nel set di dati vengono ignorati.
PERCENTILE_CONT è 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.
R. Trovare lo stipendio dei dipendenti mediani per reparto
Nell'esempio seguente viene PERCENTILE_CONT usato e PERCENTILE_DISC per trovare lo stipendio mediano dei dipendenti in ogni reparto. Queste funzioni potrebbero non restituire lo stesso valore.
PERCENTILE_CONT interpola il valore appropriato, che potrebbe o potrebbe non esistere nel set di dati, mentre PERCENTILE_DISC restituisce sempre un valore effettivo dal set.
USE AdventureWorks2022;
GO
SELECT DISTINCT Name AS DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh
ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;
Di seguito è riportato un set di risultati parziale.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.8269 16.8269
Engineering 34.375 32.6923
Executive 54.32695 48.5577
Human Resources 17.427850 16.5865
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
Nell'esempio seguente viene usato il AdventureWorksDW2012 database di esempio.
B. Trovare lo stipendio dei dipendenti mediani per reparto
Nell'esempio seguente viene PERCENTILE_CONT usato e PERCENTILE_DISC per trovare lo stipendio mediano dei dipendenti in ogni reparto. Queste funzioni potrebbero non restituire lo stesso valore.
PERCENTILE_CONT interpola il valore appropriato, che potrebbe o potrebbe non esistere nel set di dati, mentre PERCENTILE_DISC restituisce sempre un valore effettivo dal set.
SELECT DISTINCT DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianDisc
FROM dbo.DimEmployee;
Di seguito è riportato un set di risultati parziale.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.826900 16.8269
Engineering 34.375000 32.6923
Human Resources 17.427850 16.5865
Shipping and Receiving 9.250000 9.0000