Sdílet prostřednictvím


APPROX_PERCENTILE_DISC (Transact-SQL)

platí pro: SQL Server 2022 (16.x) Azure SQL Databasekoncový bod služby Azure SQL Managed InstanceSQL Analytics ve službě Microsoft FabricWarehouse v Microsoft Fabric

Tato funkce vrátí hodnotu ze sady hodnot ve skupině na základě zadaného percentilu a specifikace řazení. Vzhledem k tomu, že se jedná o přibližnou funkci, výstup by byl v souladu s chybou na základě pořadí vázaný s určitou jistotou. Vzhledem k tomu, že tento přibližný percentil vychází z diskrétního rozdělení hodnot sloupce, bude výstupní hodnota rovna jedné z konkrétních hodnot ve sloupci. Tuto funkci lze použít jako alternativu k PERCENTILE_DISC pro velké datové sady, kde je zanedbatelná chyba s rychlejší odezvou přijatelná ve srovnání s přesnou percentilovou hodnotou s pomalou dobou odezvy.

Transact-SQL konvence syntaxe

Syntaxe

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

Důvod

numeric_literal

Percentil, který se má vypočítat. Hodnota musí být v rozsahu od 0,0 do 1,0. k výpočtu 10. percentilu by předaná hodnota byla 0,10.

order_by_expression

Určuje seznam hodnot, které se mají seřadit a vypočítat percentil. Výchozí pořadí řazení je vzestupné (ASC). Jsou povoleny pouze číselné datové typy. Výraz se musí vyhodnotit na podporovaný přesný nebo přibližný číselný typ bez povolených jiných datových typů. Podporované přesné číselné typy jsou int, bigint, smallint, tinyint, bit, smallmoney a peníze. Podporované přibližné číselné typy jsou plovoucí a reálné. Desetinné a plovoucí datové typy nejsou podporovány.

Návratové typy

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

Poznámky

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

Přibližné percentilové funkce používají náčrtky KLL. Skica je vytvořená čtením datového proudu.

Tato funkce poskytuje záruky chyb založených na pořadí, které nejsou založené na hodnotách. Implementace funkce zaručuje až 1,33% chybovost v rozsahu 99% pravděpodobnosti.

Známé chování

  • Výstup funkcí nemusí být ve všech spuštěních stejný. Algoritmus použitý pro tyto funkce je skica KLL , což je randomizovaný algoritmus. Při každém sestavení skicy se vyberou náhodné hodnoty. Tyto funkce poskytují záruky chyb založených na pořadí, které nejsou založené na hodnotách.

  • Implementace funkce zaručuje až 1,33% hranice chyb v rozsahu 99% spolehlivosti.

Podpora kompatibility

V rámci úrovně kompatibility 110 a vyšší je UVNITŘ GROUP rezervované klíčové slovo. Další informace naleznete v tématu ALTER DATABASE Compatibility Level (Transact-SQL)..

Příklady

Následující příklad vytvoří tabulku, naplní ji a spustí ukázkový dotaz.

SET NOCOUNT ON
GO
DROP TABLE IF EXISTS tblEmployee
GO
CREATE TABLE tblEmployee (
EmplId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
DeptId INT,
Salary int);
GO
INSERT INTO tblEmployee
VALUES (1, 31),(1, 33), (1, 18), (2, 25),(2, 35),(2, 10), (2, 10),(3,1), (3,NULL), (4,NULL), (4,NULL)
GO
SELECT DeptId,
APPROX_PERCENTILE_DISC(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_DISC(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId