Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Den här funktionen returnerar ett ungefärligt interpolerat värde från uppsättningen värden i en grupp baserat på percentilvärde och sorteringsspecifikation. Eftersom det här är en ungefärlig funktion skulle utdata vara inom rangordningsbaserade fel som är bundna med viss konfidens. Percentilvärdet som returneras av den här funktionen baseras på en kontinuerlig fördelning av kolumnvärdena och resultatet interpoleras. På grund av detta kanske utdata inte är ett av värdena i datauppsättningen. Ett av de vanligaste användningsfallen för den här funktionen är att undvika avvikande data. Den här funktionen kan användas som ett alternativ till PERCENTILE_CONT för stora datamängder 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_CONT (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.
order_by_expression
Anger en lista med numeriska värden som ska sorteras och beräkna percentilen över. Endast en order_by_expression tillåts. Standardsorteringsordningen är stigande (ASC). Uttrycket måste utvärderas till en exakt eller ungefärlig numerisk typ, utan att andra datatyper tillåts. Exakta numeriska typer är int, bigint, smallint, tinyint, numerisk, bit, decimal, smallmoney och pengar. Ungefärliga numeriska typer är flytande och verkliga.
Returtyper
float(53)
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. På grund av den algoritm som används kräver den här funktionen mindre minne än dess icke-ungefärliga motsvarighet (PERCENTILE_CONT).
Den här funktionen ger rankningsbaserade felgarantier som inte är värdebaserade. Funktionsimplementeringen garanterar upp till 1,33% fel.
Kända beteenden
- Funktionens utdata kanske inte är samma 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, fylls i och en exempelfråga 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_CONT(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_CONT(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId;