Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Percentilis számítása az oszlopérték folyamatos eloszlása alapján az SQL Server Database Engine-ben. Az eredmény interpolált, és nem feltétlenül egyezik az oszlopban lévő konkrét értékekkel.
Transact-SQL szintaxis konvenciók
Szemantika
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
A kiszámítandó percentilis. Az értéknek és között kell változnia 0.01.0.
CSOPORTON BELÜL ( order_by_expression SORRENDBEN )
Numerikus értékek listáját adja meg a percentilis rendezéséhez és kiszámításához. Csak egy order_by_expression engedélyezett. A kifejezésnek pontos vagy hozzávetőleges numerikus típusra kell kiértékelnie, más adattípusok nem engedélyezettek. A pontos numerikus típusok: int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney és money. A közelítő numerikus típusok a lebegő és valós típusok. Az alapértelmezett rendezési sorrend növekvő.
VÉGE ( <partition_by_clause> )
A klauzula által generált FROM eredményhalmazt osztja partíciókra, amelyekre a percentilis függvényt alkalmazzák. További információért lásd: SELECT - OVER klauzula. A ORDER BY szintaxis és és klaulauda <rows or range clause>OVER nem lehet megadni egy PERCENTILE_CONT függvényben.
Visszatérési típusok
float(53)
Kompatibilitási támogatás
WITHIN GROUP egy fenntartott kulcsszó, amely a kompatibilitási szinttől 110kezdve . További információért lásd: ALTER DATABASE Kompatibilitási Szint.
Megjegyzések
Az adathalmazban lévő null értékek figyelmen kívül lesznek hagyva.
PERCENTILE_CONT nemdeterminista. További információ: Determinisztikus és Nemdeterminista függvények.
Példák
A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
A. Keresd meg a medián munkavállalói fizetést osztályonként
Az alábbi példa a PERCENTILE_CONT medián PERCENTILE_DISC munkavállalói fizetés megtalálására szolgál az egyes osztályoknál. Ezek a függvények nem feltétlenül adják ugyanazt az értéket.
PERCENTILE_CONT interpolálja a megfelelő értéket, amely létezhet vagy nem létezhet az adathalmazban, miközben PERCENTILE_DISC mindig tényleges értéket ad vissza a halmazból.
USE AdventureWorks2022;
GO
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 and Analytics Platform System (PDW)
A következő példa a AdventureWorksDW2012 mintaadatbázist használja.
B. Keresd meg a medián munkavállalói fizetést osztályonként
Az alábbi példa a PERCENTILE_CONT medián PERCENTILE_DISC munkavállalói fizetés megtalálására szolgál az egyes osztályoknál. Ezek a függvények nem feltétlenül adják ugyanazt az értéket.
PERCENTILE_CONT interpolálja a megfelelő értéket, amely létezhet vagy nem létezhet az adathalmazban, miközben PERCENTILE_DISC mindig tényleges értéket ad vissza a halmazból.
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