Kommentar
Å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-analysslutpunkt i Microsoft Fabric och Warehouse i Microsoft Fabric
Funktionen returnerar QUANTILE en exakt kontinuerlig kvant av icke-numeriskaNULL värden. Du kan använda den som både en aggregeringsfunktion och en funktion för fönster (analys):
- Aggregerad användning: Returnerar den begärda kvantilen för en hel grupp.
- Fönsteranvändning: Returnerar den begärda kvanten för varje partition samtidigt som radnivåutdata bevaras.
Transact-SQL syntaxkonventioner
Syntax
Syntax för sammansättningsfunktionen:
QUANTILE ( numeric_literal , numeric_expression )
Analysfunktionssyntax:
QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
Kvantilen att beräkna. Värdet måste ligga i det inkluderande intervallet från 0.0 till .1.0 Till exempel, ange 0.5 att beräkna medianen eller 0.95 att räkna ut 95:e percentilen.
numeric_expression
Det numeriska uttrycket vars kvtil beräknas. Stödda exakta numeriska typer är int, , , smallint, tinyint, decimalnumeric, smallmoney, , och moneybigint. Stödda approximativa numeriska typer är float och real.
OVER-sats
Partition_by_clause delar upp resultatuppsättningen FROM som genereras av -satsen i partitioner och funktionen tillämpas på varje partition.
Om du inte specificerar partition_by_clause behandlar funktionen alla rader i frågeresultatuppsättningen som en enda partition.
Klausulen OVER stöder ORDER BYinte , ROWS, eller RANGE för QUANTILE.
Mer information finns i SELECT - OVER-satsen (Transact-SQL).
Returtyper
Returnerar float(53).
Remarks
QUANTILE beräknar en kontinuerlig kvant över de ordnade icke-indatavärdenaNULL . När den begärda kvanten hamnar mellan två värden interpolerar funktionen mellan dem. Resultatet kanske inte är ett värde som finns i indataraderna.
Den aggregerade formen av QUANTILE(p, numeric_expression) är ekvivalent med PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY numeric_expression). Den analytiska formen har ekvivalent percentilkontinuerlig semantik inom varje partition.
NULL värden ignoreras. Om alla indatavärden är NULL, eller om inga rader kvalificerar, QUANTILE returnerar NULL. När ANSI_WARNINGS är ON, ger eliminering NULL av värden den standardiserade aggregerade varningen.
För samma icke-indatavärdenNULL och numeric_literal returnerar QUANTILE samma resultat.
DISTINCT stöds inte. Tecken-, datum-, tid- och datumtidsuttryck stöds inte.
Funktionen QUANTILE stöds inte i SQL Server, Azure SQL Database, Azure SQL Managed Instance eller SQL Database in Fabric.
Användningsfall
Använd QUANTILE för att beräkna kvartiler, percentiler och andra exakta fördelningsgränser med koncis syntax. Till exempel, beräkna p90-ansökningsbelopp per plan, p95-tjänstelatens per region, eller Q1-, median- och Q3-värden för ett affärsmått.
Examples
A. Beräkna aggregerade kvantiler
Detta exempel beräknar första kvartilen, medianen, tredje kvartilen och 95:e percentilen.
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. Beräkna en kvtil för varje grupp
Detta exempel beräknar det 90:e percentilbeloppet för varje försäkringsplan.
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. Returnera NULL för en hel-NULL-grupp
Detta exempel returnerar NULL eftersom alla kvalificerande värden är 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. Beräkna en partitionerad fönsterkvtil
Detta exempel lägger till den 95:e percentilens latens för varje tjänst till varje förfrågningsrad.
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;