Anteckning
Å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
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Beräknar en specifik percentil för sorterade värden i en hel raduppsättning eller inom en raduppsättnings distinkta partitioner i SQL Server. För ett givet percentilvärde PPERCENTILE_DISC sorterar du uttrycksvärdena i ORDER BY -satsen. Sedan returneras värdet med det minsta CUME_DIST angivna värdet (med avseende på samma sorteringsspecifikation) som är större än eller lika med P. Till exempel PERCENTILE_DISC (0.5) beräknar den 50:e percentilen (det vill säga medianen) för ett uttryck.
PERCENTILE_DISC beräknar percentilen baserat på en diskret fördelning av kolumnvärdena. Resultatet är lika med ett specifikt kolumnvärde.
Transact-SQL syntaxkonventioner
Syntax
PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Arguments
ordagrann
Percentilen som ska beräknas. Värdet måste vara mellan 0,0 och 1,0.
INOM GRUPPEN ( ORDER BY order_by_expression [ ASC | DESC ] )
Anger en lista med värden som ska sorteras och beräkna percentilen över. Endast en order_by_expression tillåts. Standardsorteringsordningen är stigande. Listan med värden kan vara av någon av de datatyper som är giltiga för sorteringsåtgärden.
ÖVER ( <partition_by_clause> )
FROM Delar upp satsens resultatuppsättning i partitioner. Percentilfunktionen tillämpas på dessa partitioner. Mer information finns i SELECT - OVER-satsen. ORDER <BY-satsen> och <rad- eller intervallsatsen>kan inte anges i en PERCENTILE_DISC funktion.
Returtyper
Returtypen bestäms av order_by_expression typ.
Stöd för kompatibilitet
Under kompatibilitetsnivå 110 och senare WITHIN GROUP är ett reserverat nyckelord. Mer information finns i ALTER DATABASE-kompatibilitetsnivån.
Anmärkningar
Alla null-värden i datauppsättningen ignoreras.
PERCENTILE_DISC är nondeterministisk. Mer information finns i Deterministiska och icke-terministiska funktioner.
Examples
Exempel på grundläggande syntax
I följande exempel används PERCENTILE_CONT och PERCENTILE_DISC för att hitta varje avdelnings medianlön för anställda. De kanske inte returnerar samma värde:
-
PERCENTILE_CONTreturnerar lämpligt värde, även om det inte finns i datauppsättningen. -
PERCENTILE_DISCreturnerar ett faktiskt angivet värde.
USE AdventureWorks2022;
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)
Exempel på grundläggande syntax
I följande exempel används PERCENTILE_CONT och PERCENTILE_DISC för att hitta varje avdelnings medianlön för anställda. De kanske inte returnerar samma värde:
-
PERCENTILE_CONTreturnerar lämpligt värde, även om det inte finns i datauppsättningen. -
PERCENTILE_DISCreturnerar ett faktiskt angivet värde.
-- Uses AdventureWorks
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