Udostępnij za pomocą


APPROX_PERCENTILE_CONT (Transact-SQL)

Dotyczy do: SQL Server 2022 (16.x) Azure SQL Database AzureSQL Managed InstanceSQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

Ta funkcja zwraca przybliżoną wartość interpolowaną z zestawu wartości w grupie na podstawie wartości percentylu i specyfikacji sortowania. Ponieważ jest to przybliżona funkcja, dane wyjściowe byłyby w obrębie błędu opartego na klasyfikacji powiązanego z pewnym zaufaniem. Wartość percentylu zwracana przez tę funkcję jest oparta na ciągłym rozkładie wartości kolumn, a wynik zostanie interpolowany. W związku z tym dane wyjściowe mogą nie być jedną z wartości w zestawie danych. Jednym z typowych przypadków użycia tej funkcji jest uniknięcie wartości odstających danych. Ta funkcja może służyć jako alternatywa dla PERCENTILE_CONT dla dużych zestawów danych, w których niewielki błąd z szybszą odpowiedzią jest akceptowalny w porównaniu do dokładnej wartości percentylu z wolnym czasem odpowiedzi.

Transact-SQL konwencje składni

Składnia

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

Argumentacja

numeric_literal

Percentyl do obliczenia. Wartość musi należeć do zakresu od 0,0 do 1,0.

order_by_expression

Określa listę wartości liczbowych do sortowania i obliczania percentylu. Dozwolone jest tylko jedno order_by_expression . Domyślna kolejność sortowania to rosnąco (ASC). Wyrażenie musi zostać obliczone na dokładny lub przybliżony typ liczbowy bez dozwolonych innych typów danych. Dokładne typy liczbowe to int, bigint, smallint, tinyint, liczbowy, bit, dziesiętny, mały rozmiar i pieniądze. Przybliżone typy liczbowe są zmiennoprzecinkowe i rzeczywiste.

Typy zwracane

float(53)

Uwagi

Wszystkie wartości null w zestawie danych są ignorowane.

Przybliżone funkcje percentylu używają szkicu KLL. Szkic jest tworzony przez odczytywanie strumienia danych. Ze względu na używany algorytm ta funkcja wymaga mniejszej ilości pamięci niż jej nieochodny odpowiednik (PERCENTILE_CONT).

Ta funkcja zapewnia gwarancje błędów oparte na klasyfikacji, które nie są oparte na wartości. Implementacja funkcji gwarantuje błąd 1.33%.

Znane zachowania

  • Dane wyjściowe funkcji mogą nie być takie same we wszystkich wykonaniach. Algorytm używany dla tych funkcji to szkic KLL , który jest algorytmem losowym. Za każdym razem, gdy szkic jest tworzony, wybierane są losowe wartości. Te funkcje zapewniają gwarancji błędów opartych na klasyfikacji, które nie są oparte na wartości.
  • Implementacja funkcji gwarantuje maksymalnie 1,33% granic błędów w zakresie 99% zaufania.

Obsługa zgodności

W obszarze poziom zgodności 110 i nowszych funkcja WITHIN GROUP jest zastrzeżonym słowem kluczowym. Aby uzyskać więcej informacji, zobacz ALTER DATABASE Compatibility Level (Transact-SQL).

Przykłady

Poniższy przykład tworzy tabelę, wypełnia ją i wykonuje przykładowe zapytanie.

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;