Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Microsoft Fabric
Beräknar en percentil baserat på en kontinuerlig fördelning av kolumnvärdet i SQL Server Database Engine. Resultatet är interpolerat och kanske inte motsvarar något av de specifika värdena i kolumnen.
Transact-SQL syntaxkonventioner
Syntax
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
Percentilen som ska beräknas. Värdet måste variera mellan 0.0 och 1.0.
INOM GRUPPEN ( ORDNING EFTER order_by_expression )
Anger en lista med numeriska värden som ska sorteras och beräkna percentilen över. Endast en order_by_expression tillåts. Uttrycket måste utvärderas till en exakt eller ungefärlig numerisk typ, utan att andra datatyper tillåts. Exakta numeriska typer är int, bigint, smallint, tinyint, numerisk, bit, decimal, smallmoney och money. Ungefärliga numeriska typer är flyttall och reell. Standardsorteringsordningen är stigande.
ÖVER ( <partition_by_clause> )
delar in resultatmängden som klausulen producerar FROM i partitioner där percentilfunktionen tillämpas. För mer information, se SELECT - OVER-klausulen. Syntaxens ORDER BY klausul och <rows or range clause>OVER kan inte specificeras i en PERCENTILE_CONT funktion.
Returtyper
float(53)
Stöd för kompatibilitet
WITHIN GROUP är ett reserverat nyckelord, som börjar med kompatibilitetsnivån 110. För mer information, se ALTER DATABASE Compatibility Level.
Anmärkningar
Alla null-värden i datauppsättningen ignoreras.
PERCENTILE_CONT är nondeterministisk. Mer information finns i Deterministiska och nondeterministiska funktioner.
Examples
Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
A. Hitta medianlön per avdelning
Följande exempel använder PERCENTILE_CONT och PERCENTILE_DISC för att hitta medianlönen för anställda i varje avdelning. Dessa funktioner kanske inte returnerar samma värde.
PERCENTILE_CONT interpolerar det lämpliga värdet, som kan finnas eller inte finns i datamängden, samtidigt som PERCENTILE_DISC det alltid returnerar ett faktiskt värde från mängden.
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;
Här är en partiell resultatuppsättning.
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
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
Följande exempel använder exempeldatabasen AdventureWorksDW2012 .
B. Hitta medianlön per avdelning
Följande exempel använder PERCENTILE_CONT och PERCENTILE_DISC för att hitta medianlönen för anställda i varje avdelning. Dessa funktioner kanske inte returnerar samma värde.
PERCENTILE_CONT interpolerar det lämpliga värdet, som kan finnas eller inte finns i datamängden, samtidigt som PERCENTILE_DISC det alltid returnerar ett faktiskt värde från mängden.
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;
Här är en partiell resultatuppsättning.
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