Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Analytics-végpont a Microsoft Fabricben és a Microsoft Fabric warehouse-ban
A QUANTILE függvény egy pontos folyamatos kvantilt nem-numerikusNULL értékeket ad vissza. Összesítő függvényként és ablakfüggvényként (analitikus) is használható:
- Aggregált használat: A kért kvantilit adja vissza egy egész csoport számára.
- Ablakhasználat: Minden partícióhoz a kért kvantilát adja vissza, miközben megőrzi a sorszintű kimenetet.
Transact-SQL szintaxis konvenciók
Szemantika
Aggregációs függvény szintaxisa:
QUANTILE ( numeric_literal , numeric_expression )
Elemzési függvény szintaxisa:
QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
A kvantililát, amit ki kell számolni. Az értéknek az inkluzív tartományban kell lennie .0.01.0 Például határozzuk 0.5 meg a medián vagy 0.95 a 95. percentilis kiszámítását.
numeric_expression
Az a numerikus kifejezés, amelynek kvantiláját kiszámítjuk. A támogatott pontos numerikus típusok , intbigint, smallint, tinyint, smallmoneynumericdecimal, és .money A támogatott közelítő numerikus típusok és floatreal.
OVER záradék
A partition_by_clause a záradék által FROM létrehozott eredményhalmazt partíciókra osztja, és a függvényt minden partícióra alkalmazza a rendszer.
Ha nem határozod meg partition_by_clause, a függvény a lekérdezés eredményhalmazának minden sorát egyetlen partícióként kezeli.
A OVER klauda nem támogatja ORDER BY, ROWS, vagy RANGE .QUANTILE
További információ: SELECT – OVER záradék (Transact-SQL).
Visszatérési típusok
Visszatér float(53).
Remarks
QUANTILE egy folyamatos kvantilát számol ki a rendezett nemNULL bemeneti értékek felett. Amikor a kért kvantil két érték közé esik, a függvény interpolál közöttük. Az eredmény nem feltétlenül olyan érték, amely a bemeneti sorokban létezik.
A aggregált QUANTILE(p, numeric_expression) formája ekvivalens .PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY numeric_expression) Az analitikus forma minden partíción belül ekvivalens percentilis-folyamatos szemantika van.
NULL az értékek figyelmen kívül lesznek hagyva. Ha minden bemeneti érték , NULLvagy ha egyetlen sor sem minősül, QUANTILE akkor visszaadja NULL. Amikor ANSI_WARNINGS az , ONaz értékek kizárása NULL a standard aggregált figyelmeztetést eredményezi.
Ugyanaz a nemNULL bemeneti értékek és numeric_literal esetén QUANTILE ugyanazt az eredményt adják vissza.
DISTINCT nem támogatott. A karakter, dátum, időpont és dátum kifejezések nem támogatottak.
Ez a QUANTILE funkció nem támogatja az SQL Server-ben, Azure SQL Database-ban, Azure SQL Managed Instance-ban vagy az SQL database-ben a Fabric-ben.
Felhasználási eset
Kvartilások QUANTILE , percentilis és más pontos eloszláshatárok számítására tömör szintaxissal. Például számoljuk ki a p90 igények összegét terv szerint, a p95 szolgáltatási késleltetést régió szerint, vagy az üzleti metrika Q1, medián és Q3 értékeit.
Példák
A. Aggregált kvantilok kiszámítása
Ez a példa az első negyedet, mediánt, harmadik negyedet és a 95. percentilist.
WITH Samples AS (
SELECT *
FROM (VALUES
(1), (NULL), (2), (3), (4), (5), (6), (7), (8), (13)
) AS v(value)
)
SELECT
QUANTILE(0.25, value) AS Q1_25thPercentile,
QUANTILE(0.50, value) AS Median_50thPercentile,
QUANTILE(0.75, value) AS Q3_75thPercentile,
QUANTILE(0.95, value) AS P95
FROM Samples;
B. Kiszámoljunk egy kvantil minden csoporthoz
Ez a példa kiszámítja az egyes biztosítási terv 90. percentilis kárigény összegét.
WITH Claims AS (
SELECT *
FROM (VALUES
('Plan-A', 420.00),
('Plan-A', 500.00),
('Plan-A', 610.00),
('Plan-B', 250.00),
('Plan-B', 275.00),
('Plan-B', 310.00)
) AS v(plan_name, claim_amount)
)
SELECT
plan_name,
QUANTILE(0.90, claim_amount) AS P90ClaimAmount
FROM Claims
GROUP BY plan_name;
C. Return NULL egy teljesen NULL csoporthoz
Ez a példa azért tér visszaNULL, mert minden minősítő érték .NULL
WITH CampaignDiscounts AS (
SELECT *
FROM (VALUES
(9001, NULL),
(9001, NULL),
(9001, NULL),
(9002, 10.00)
) AS v(campaign_id, discount_percent)
)
SELECT QUANTILE(0.90, discount_percent) AS P90DiscountPercent
FROM CampaignDiscounts
WHERE campaign_id = 9001;
D. Számolj ki egy partíciós ablak kvantilát
Ez a példa minden szolgáltatás 95. percentili késleltetését minden kéréssorhoz hozzáadja.
WITH ServiceLatency AS (
SELECT *
FROM (VALUES
('Checkout', 'req-001', 180),
('Checkout', 'req-002', 220),
('Checkout', 'req-003', 260),
('Search', 'req-010', 90),
('Search', 'req-011', 110),
('Search', 'req-012', 130)
) AS v(service, request_id, latency_ms)
)
SELECT
service,
request_id,
latency_ms,
QUANTILE(0.95, latency_ms) OVER (PARTITION BY service) AS ServiceP95Latency
FROM ServiceLatency;