Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Berekent een specifiek percentiel voor gesorteerde waarden in een hele rijenset of binnen de afzonderlijke partities van een rijset in SQL Server. Voor een bepaalde percentielwaarde PPERCENTILE_DISC sorteert u de expressiewaarden in de ORDER BY component. Vervolgens wordt de waarde geretourneerd met de kleinste CUME_DIST waarde die is opgegeven (met betrekking tot dezelfde sorteerspecificatie) die groter is dan of gelijk is aan P. Berekent bijvoorbeeld PERCENTILE_DISC (0.5) het 50e percentiel (dat wil gezegd de mediaan) van een expressie.
PERCENTILE_DISC berekent het percentiel op basis van een discrete verdeling van de kolomwaarden. Het resultaat is gelijk aan een specifieke kolomwaarde.
Transact-SQL syntaxis-conventies
Syntaxis
PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Arguments
letterlijk
Het percentiel dat moet worden berekend. De waarde moet variëren tussen 0,0 en 1,0.
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
Hiermee geeft u een lijst met waarden om het percentiel te sorteren en te berekenen. Er is slechts één order_by_expression toegestaan. De standaardsorteerdervolgorde is oplopend. De lijst met waarden kan van een van de gegevenstypen zijn die geldig zijn voor de sorteerbewerking.
OVER ( <partition_by_clause> )
Verdeelt de resultatenset van de FROM component in partities. De percentielfunctie wordt toegepast op deze partities. Zie SELECT - OVER-component voor meer informatie. De <ORDER BY-component> en <-rijen of bereikcomponent>kunnen niet worden opgegeven in een PERCENTILE_DISC functie.
Retourtypen
Het retourtype wordt bepaald door het order_by_expression type.
Compatibiliteitsondersteuning
Onder compatibiliteitsniveau 110 en hoger WITHIN GROUP is een gereserveerd trefwoord. Zie ALTER DATABASE-compatibiliteitsniveau voor meer informatie.
Opmerkingen
Null-waarden in de gegevensset worden genegeerd.
PERCENTILE_DISC is niet-deterministisch. Zie Deterministische en niet-deterministische functies voor meer informatie.
Voorbeelden
Voorbeeld van basissyntaxis
In het volgende voorbeeld wordt het salaris van de mediaan van elke afdeling gebruikt PERCENTILE_CONT en PERCENTILE_DISC gezocht. Ze retourneren mogelijk niet dezelfde waarde:
-
PERCENTILE_CONTretourneert de juiste waarde, zelfs als deze niet bestaat in de gegevensset. -
PERCENTILE_DISCretourneert een werkelijke setwaarde.
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;
Hier volgt een gedeeltelijke resultatenset.
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
Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)
Voorbeeld van basissyntaxis
In het volgende voorbeeld wordt het salaris van de mediaan van elke afdeling gebruikt PERCENTILE_CONT en PERCENTILE_DISC gezocht. Ze retourneren mogelijk niet dezelfde waarde:
-
PERCENTILE_CONTretourneert de juiste waarde, zelfs als deze niet bestaat in de gegevensset. -
PERCENTILE_DISCretourneert een werkelijke setwaarde.
-- 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;
Hier volgt een gedeeltelijke resultatenset.
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