Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Analytics-eindpunt in Microsoft Fabric en Warehouse in Microsoft Fabric
De QUANTILE functie geeft een exacte continue kwantiel van niet-numeriekeNULL waarden terug. U kunt deze gebruiken als een statistische functie en een vensterfunctie (analysefunctie):
- Aggregate gebruik: Geeft het gevraagde kwantil terug voor een hele groep.
- Venstergebruik: Geeft de gevraagde quantiel terug voor elke partitie, terwijl de uitvoer op rijniveau behouden blijft.
Transact-SQL syntaxis-conventies
Syntax
Syntaxis van aggregatiefunctie:
QUANTILE ( numeric_literal , numeric_expression )
Syntaxis van analysefunctie:
QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumenten
numeric_literal
De kwantiel om te berekenen. De waarde moet in het inclusieve bereik liggen van tot en met 0.01.0. Geef bijvoorbeeld aan 0.5 om de mediaan te berekenen of 0.95 om het 95e percentiel te berekenen.
numeric_expression
De numerieke uitdrukking waarvan het kwantiel wordt berekend. Ondersteunde exacte numerieke types zijn int, bigint, , smallint, tinyint, smallmoneynumericdecimalen money. Ondersteunde benaderende numerieke types zijn float en real.
OVER-component
De partition_by_clause verdeelt de resultatenset die door de FROM component wordt geproduceerd in partities en de functie wordt toegepast op elke partitie.
Als je partition_by_clause niet specificeert, behandelt de functie alle rijen van de zoekresultatenset als één enkele partitie.
De OVER clausule ondersteunt ORDER BY, ROWS, of RANGE voor QUANTILEniet.
Zie SELECT - OVER-component (Transact-SQL)voor meer informatie.
Retourtypen
Retourneert float(53).
Remarks
QUANTILE berekent een continue quantiel over de geordende niet-invoerwaardenNULL . Wanneer het gevraagde kwantel tussen twee waarden valt, interpoleert de functie tussen deze waarden. Het resultaat hoeft geen waarde te zijn die in de invoerrijen bestaat.
De aggregate vorm van QUANTILE(p, numeric_expression) is equivalent aan PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY numeric_expression). De analytische vorm heeft equivalente percentiel-continue semantiek binnen elke partitie.
NULL waarden worden genegeerd. Als alle invoerwaarden zijn NULL, of als geen rijen kwalificeren, QUANTILE geeft NULL. Wanneer ANSI_WARNINGS , ONproduceert het elimineren NULL van waarden de standaard aggregatiewaarschuwing.
Voor dezelfde niet-invoerwaardenNULL en numeric_literalQUANTILE geeft hetzelfde resultaat terug.
DISTINCT wordt niet ondersteund. Karakter-, datum-, tijd- en datum-tijd-expressies worden niet ondersteund.
De QUANTILE functie wordt niet ondersteund in SQL Server, Azure SQL Database, Azure SQL Managed Instance of SQL Database in Fabric.
Gebruiksituatie
Gebruik QUANTILE het om kwartielen, percentielen en andere exacte verdelingsgrenzen te berekenen met beknopte syntaxis. Bereken bijvoorbeeld p90-claimbedragen per plan, p95-servicelatentie per regio, of Q1-, mediaan- en Q3-waarden voor een bedrijfsmaatstaf.
Examples
Eén. Bereken aggregate kwantielen
Dit voorbeeld berekent het eerste kwartiel, mediaan, derde kwartiel en 95e percentiel.
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. Bereken een kwantiel voor elke groep
Dit voorbeeld berekent het claimbedrag van het 90e percentiel voor elk verzekeringsplan.
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. Geef NULL terug voor een all-NULL groep
Dit voorbeeld geeft terug NULL omdat alle kwalificerende waarden zijn 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. Bereken een gepartitioneerde vensterkwantiel
Dit voorbeeld voegt de latentie van het 95e percentiel voor elke service toe aan elke verzoekrij.
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;