Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Vypočítá percentil založený na spojitém rozdělení hodnoty sloupce v databázovém enginu SQL Serveru. Výsledek je interpolován a nemusí odpovídat žádné konkrétní hodnotě ve sloupci.
Syntaxe
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
Percentil, který se má vypočítat. Hodnota musí být mezi 0.0 a .1.0
UVNITŘ SKUPINY ( POŘADÍ PODLE order_by_expression)
Určuje seznam číselných hodnot pro řazení a výpočet percentilu. Je povolen pouze jeden order_by_expression . Výraz musí být vyhodnocen jako přesný nebo přibližný číselný typ bez povolených jiných datových typů. Přesné číselné typy jsou int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney a money. Přibližné číselné typy jsou plovoucí a reálné. Výchozí pořadí řazení je vzestupné.
KONEC ( <partition_by_clause> )
Rozdělí množinu výsledků vytvořenou klauzulí FROM na partace, na které je aplikována percentilová funkce. Pro více informací viz VYBRAT - OVER Clause. Klauzule ORDER BY a <rows or range clause>OVER syntaxe nelze ve PERCENTILE_CONT funkci specifikovat.
Návratové typy
Float(53)
Podpora kompatibility
WITHIN GROUP je rezervované klíčové slovo, začíná na úrovni 110kompatibility . Pro více informací viz ALTER DATABASE Compatibility Level.
Poznámky
Všechny hodnoty null v sadě dat se ignorují.
PERCENTILE_CONT je nedeterministické. Další informace naleznete v tématu Deterministické a nedeterministické funkce.
Examples
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
A. Najděte medián platu zaměstnance podle oddělení
Následující příklad používá PERCENTILE_CONT a k nalezení PERCENTILE_DISC mediánu mzdy zaměstnanců v každém oddělení. Tyto funkce nemusí vracet stejnou hodnotu.
PERCENTILE_CONT interpoluje odpovídající hodnotu, která může, ale nemusí v datové sadě existovat, přičemž PERCENTILE_DISC vždy vrací skutečnou hodnotu z této množiny.
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;
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)
Následující příklad využívá vzorovou databázi AdventureWorksDW2012 .
B. Najděte medián platu zaměstnance podle oddělení
Následující příklad používá PERCENTILE_CONT a k nalezení PERCENTILE_DISC mediánu mzdy zaměstnanců v každém oddělení. Tyto funkce nemusí vracet stejnou hodnotu.
PERCENTILE_CONT interpoluje odpovídající hodnotu, která může, ale nemusí v datové sadě existovat, přičemž PERCENTILE_DISC vždy vrací skutečnou hodnotu z této množiny.
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