Dela via


PERCENTILE_DISC (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse 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_CONT returnerar lämpligt värde, även om det inte finns i datauppsättningen.
  • PERCENTILE_DISC returnerar 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_CONT returnerar lämpligt värde, även om det inte finns i datauppsättningen.
  • PERCENTILE_DISC returnerar 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