Sdílet prostřednictvím


PERCENTILE_DISC (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vypočítá konkrétní percentil pro seřazené hodnoty v celé sadě řádků nebo v různých oddílech sady řádků na SQL Serveru. Pro danou hodnotu percentilu PPERCENTILE_DISC seřadí hodnoty výrazu v klauzuliORDER BY. Potom vrátí hodnotu s nejmenší CUME_DIST danou hodnotou (s ohledem na stejnou specifikaci řazení), která je větší nebo rovna P. Vypočítá například PERCENTILE_DISC (0.5) 50. percentil (tj. medián) výrazu. PERCENTILE_DISC vypočítá percentil na základě diskrétního rozdělení hodnot sloupce. Výsledek se rovná určité hodnotě sloupce.

Transact-SQL konvence syntaxe

Syntaxe

PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
    OVER ( [ <partition_by_clause> ] )

Arguments

literal

Percentil, který se má vypočítat. Hodnota musí být v rozsahu od 0,0 do 1,0.

WITHIN GROUP ( ORDER BY ORDER_BY_EXPRESSION [ ASC | DESC ] )

Určuje seznam hodnot, které se mají seřadit a vypočítat percentil. Je povolen pouze jeden order_by_expression . Výchozí pořadí řazení je vzestupné. Seznam hodnot může být libovolný z datových typů, které jsou platné pro operaci řazení.

KONEC ( <partition_by_clause> )

Rozdělí FROM sadu výsledků klauzule na oddíly. Funkce percentilu se použije na tyto oddíly. Další informace naleznete v tématu SELECT - OVER klauzule. Klauzule <> ORDER BY a <řádky nebo klauzule>rozsahu nelze zadat ve PERCENTILE_DISC funkci.

Návratové typy

Návratový typ je určen typem order_by_expression .

Podpora kompatibility

V rámci úrovně kompatibility 110 a vyšší WITHIN GROUP je vyhrazené klíčové slovo. Další informace naleznete v tématu ALTER DATABASE úroveň kompatibility.

Poznámky

Všechny hodnoty null v sadě dat se ignorují.

PERCENTILE_DISC je nedeterministické. Další informace naleznete v tématu Deterministické a nedeterministické funkce.

Examples

Příklad základní syntaxe

Následující příklad používá PERCENTILE_CONT a PERCENTILE_DISC k vyhledání mediánu mzdy jednotlivých oddělení zaměstnanců. Nemusí vrátit stejnou hodnotu:

  • PERCENTILE_CONT vrátí odpovídající hodnotu, i když v sadě dat neexistuje.
  • PERCENTILE_DISC vrátí skutečnou nastavenou hodnotu.
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;

Tady je částečná sada výsledků.

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

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

Příklad základní syntaxe

Následující příklad používá PERCENTILE_CONT a PERCENTILE_DISC k vyhledání mediánu mzdy jednotlivých oddělení zaměstnanců. Nemusí vrátit stejnou hodnotu:

  • PERCENTILE_CONT vrátí odpovídající hodnotu, i když v sadě dat neexistuje.
  • PERCENTILE_DISC vrátí skutečnou nastavenou hodnotu.
-- 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;

Tady je částečná sada výsledků.

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