Dela via


APPROX_PERCENTILE_DISC (Transact-SQL)

gäller för: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Den här funktionen returnerar värdet från uppsättningen med värden i en grupp baserat på den angivna percentilen och sorteringsspecifikationen. Eftersom det här är en ungefärlig funktion skulle utdata vara inom rangordningsbaserade fel som är bundna med viss konfidens. Eftersom den här ungefärliga percentilen baseras på en diskret fördelning av kolumnvärdena är utdatavärdet lika med ett av de specifika värdena i kolumnen. Den här funktionen kan användas som ett alternativ till PERCENTILE_DISC för stora datauppsättningar där försumbart fel med snabbare svar är acceptabelt jämfört med korrekt percentilvärde med långsam svarstid.

Transact-SQL syntaxkonventioner

Syntax

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

Argumentation

numeric_literal

Percentilen som ska beräknas. Värdet måste vara mellan 0,0 och 1,0. för att beräkna den tionde percentilen blir värdet 0,10.

order_by_expression

Anger en lista med värden som ska sorteras och beräkna percentilen över. Standardsorteringsordningen är stigande (ASC). Endast numeriska datatyper tillåts. Uttrycket måste utvärderas till en exakt eller ungefärlig numerisk typ som stöds, utan att andra datatyper tillåts. Exakta numeriska typer som stöds är int, bigint, smallint, tinyint, bit, smallmoney och money. Ungefärliga numeriska typer som stöds är flytande och verkliga. Datatyper för decimaler och flyttal stöds inte.

Returtyper

Returtypen bestäms av order_by_expression typ.

Anmärkningar

Alla null-värden i datauppsättningen ignoreras.

Ungefärliga percentilfunktioner använder KLL-skiss. Skissen skapas genom att läsa dataströmmen.

Den här funktionen ger rankningsbaserade felgarantier som inte är värdebaserade. Funktionsimplementeringen garanterar upp till 1,33% felfrekvens inom 99% sannolikhet.

Kända beteenden

  • Funktionernas utdata kanske inte är desamma i alla körningar. Algoritmen som används för dessa funktioner är KLL-skiss som är en randomiserad algoritm. Varje gång skissen skapas väljs slumpmässiga värden. Dessa funktioner ger rankningsbaserade felgarantier som inte är värdebaserade.

  • Funktionsimplementeringen garanterar upp till 1,33% felgränsen inom 99% konfidens.

Stöd för kompatibilitet

Under kompatibilitetsnivå 110 och senare är WITHIN GROUP ett reserverat nyckelord. Mer information finns i ALTER DATABASE Compatibility Level (Transact-SQL)..

Exempel

I följande exempel skapas en tabell, den fylls i och exempelfrågan körs.

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