Delen via


APPROX_PERCENTILE_DISC (Transact-SQL)

van toepassing op: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Deze functie retourneert de waarde uit de set waarden in een groep op basis van de opgegeven percentiel- en sorteerspecificatie. Omdat dit een geschatte functie is, bevindt de uitvoer zich binnen ranggebaseerde fout die met een bepaald vertrouwen is gebonden. Aangezien dit percentiel bij benadering is gebaseerd op een discrete verdeling van de kolomwaarden, is de uitvoerwaarde gelijk aan een van de specifieke waarden in de kolom. Deze functie kan worden gebruikt als alternatief voor PERCENTILE_DISC voor grote gegevenssets, waarbij verwaarloosbare fouten met een snellere reactie acceptabel zijn in vergelijking met een nauwkeurige percentielwaarde met een trage reactietijd.

Transact-SQL syntaxis-conventies

Syntaxis

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

Argumentatie

numeric_literal

Het percentiel dat moet worden berekend. De waarde moet variëren tussen 0,0 en 1,0. om het 10e percentiel te berekenen, is de doorgegeven waarde 0,10.

order_by_expression

Hiermee geeft u een lijst met waarden om het percentiel te sorteren en te berekenen. De standaardsorteerdervolgorde is oplopend (ASC). Alleen numerieke gegevenstypen zijn toegestaan. De expressie moet een ondersteund exact of geschat numeriek type evalueren, zonder dat er andere gegevenstypen zijn toegestaan. Ondersteunde exacte numerieke typen zijn int, bigint, smallint, smallint, bit, smallmoney en geld. Ondersteunde numerieke typen zijn zwevend en reëel. Gegevenstypen voor decimalen en floats worden niet ondersteund.

Retourtypen

Het retourtype wordt bepaald door het order_by_expression type.

Opmerkingen

Null-waarden in de gegevensset worden genegeerd.

Bij benadering van percentielfuncties wordt KLL-schets gebruikt. De schets is gebouwd door de gegevensstroom te lezen.

Deze functie biedt op rang gebaseerde foutgaranties die niet op waarde zijn gebaseerd. De functie-implementatie garandeert een foutpercentage van maximaal 1,33% binnen een kans van 99%.

Bekend gedrag

  • De uitvoer van de functies is mogelijk niet hetzelfde in alle uitvoeringen. Het algoritme dat voor deze functies wordt gebruikt, is een KLL-schets die een willekeurig algoritme is. Telkens wanneer de schets wordt gemaakt, worden willekeurige waarden gekozen. Deze functies bieden foutgaranties op basis van classificaties, niet op basis van waarde.

  • De functie-implementatie garandeert maximaal 1,33% foutgrenzen binnen een betrouwbaarheid van 99%.

Compatibiliteitsondersteuning

Onder compatibiliteitsniveau 110 en hoger is WITHIN GROUP een gereserveerd trefwoord. Zie ALTER DATABASE Compatibility Level (Transact-SQL).voor meer informatie.

Voorbeelden

In het volgende voorbeeld wordt een tabel gemaakt, gevuld en wordt de voorbeeldquery uitgevoerd.

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