PERCENTILE_DISC (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsSQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

A PERCENTILE_DISC függvény egy adott percentilis értékeket számol ki egy egész sorhalmazban vagy annak különálló partícióin belül rendezett értékekre. Egy adott PPERCENTILE_DISC percentilisérték esetén a záradékban lévő kifejezésértékeket rendeziORDER BY. Ezután a legkisebb CUME_DIST megadott értékkel adja vissza (ugyanahhoz a rendezési specifikációhoz képest), amely nagyobb vagy egyenlő a P értéknél. Kiszámítja például PERCENTILE_DISC (0.5) egy kifejezés 50. percentilisét (vagyis mediánját). PERCENTILE_DISC az oszlopértékek diszkrét eloszlása alapján számítja ki a percentilis értékét. Az eredmény egy adott oszlopértéknek felel meg.

Transact-SQL szintaxis konvenciók

Szemantika

Aggregációs függvény szintaxisa:

PERCENTILE_DISC ( numeric_literal ) 
   WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )

Elemzési függvény szintaxisa:

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

Arguments

betű szerinti

A kiszámítandó percentilis. Az értéknek 0,0 és 1,0 között kell lennie.

CSOPORTON BELÜL ( ORDER BY order_by_expression [ ASC | DESC ] )

Megadja a percentilis rendezésére és kiszámítására vonatkozó értékek listáját. Csak egy order_by_expression engedélyezett. Az alapértelmezett rendezési sorrend növekvő. Az értékek listája a rendezési művelethez érvényes adattípusok bármelyikét tartalmazhatja.

VÉGE ( <partition_by_clause> )

FROM A záradék eredményhalmazát partíciókra osztja. A percentilisfüggvény ezekre a partíciókra lesz alkalmazva. További információ: SELECT – OVER záradék. Az <ORDER BY záradék> és <a sorok vagy tartomány záradék>nem adható meg egy PERCENTILE_DISC függvényben.

Note

Ez a OVER záradék opcionális a Fabric Data Warehouse-ben és az SQL analitikai végpontban. PERCENTILE_DISC használható aggregált vagy analitikus (ablakos) formában.

Visszatérési típusok

A visszatérési típust a order_by_expression típus határozza meg.

Kompatibilitási támogatás

A 110-es és újabb WITHIN GROUP kompatibilitási szinten fenntartott kulcsszó. További információ: ALTER DATABASE kompatibilitási szint.

Megjegyzések

Az adathalmazban lévő null értékek figyelmen kívül lesznek hagyva.

PERCENTILE_DISC nemdeterminista. További információ: Determinisztikus és nemdeterminista függvények.

Az aggregált formájaPERCENTILE_DISC, amely kihagyja a OVER záradékot, nem támogatott az SQL Server, Azure SQL Database, Azure SQL Managed Instance vagy SQL database in Fabric.

Példák

Példa alapszintű szintaxisra

Az alábbi példa az egyes részlegek medián alkalmazotti fizetését használja PERCENTILE_CONT és PERCENTILE_DISC keresi. Előfordulhat, hogy nem ugyanazt az értéket adja vissza:

  • PERCENTILE_CONT a megfelelő értéket adja vissza, még akkor is, ha az nem szerepel az adathalmazban.
  • PERCENTILE_DISC egy tényleges beállított értéket ad vissza.
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;

Íme egy részleges eredményhalmaz.

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éldák: Azure Synapse Analytics

Példa alapszintű szintaxisra

Az alábbi példa az egyes részlegek medián alkalmazotti fizetését használja PERCENTILE_CONT és PERCENTILE_DISC keresi. Előfordulhat, hogy nem ugyanazt az értéket adja vissza:

  • PERCENTILE_CONT a megfelelő értéket adja vissza, még akkor is, ha az nem szerepel az adathalmazban.
  • PERCENTILE_DISC egy tényleges beállított értéket ad vissza.
-- 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;

Íme egy részleges eredményhalmaz.

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