Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2022 (16.x)
Azure SQL Database
AzureSQL Managed Instance
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL 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;