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 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