Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :Point de terminaison d’analytique SQL dans Microsoft Fabric et Warehouse dans Microsoft Fabric
La QUANTILE fonction retourne un quantile exact continu de valeurs nonNULL numériques. Vous pouvez l’utiliser comme fonction d’agrégation et de fenêtre (analytique) :
- Utilisation agrégée : Retourne le quantile demandé pour un groupe entier.
- Utilisation de la fenêtre : Retourne le quantile demandé pour chaque partition tout en conservant la sortie au niveau des lignes.
Conventions de la syntaxe Transact-SQL
Syntax
Syntaxe de la fonction d’agrégation :
QUANTILE ( numeric_literal , numeric_expression )
Syntaxe de la fonction analytique :
QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
Le quantile à calculer. La valeur doit être dans l’intervalle inclusif de 0.0 jusqu’à 1.0. Par exemple, spécifier 0.5 pour calculer la médiane ou 0.95 pour calculer le 95e percentile.
numeric_expression
L’expression numérique dont le quantile est calculé. Les types numériques exacts pris en charge sont int, bigint, smallint, tinyintnumeric, decimal, , smallmoney, et money. Les types numériques approximatifs pris en charge sont float et real.
CLAUSE OVER
Le partition_by_clause divise le jeu de résultats généré par la FROM clause en partitions et la fonction est appliquée à chaque partition.
Si vous ne spécifiez pas partition_by_clause, la fonction traite toutes les lignes de l’ensemble de résultats de requêtes comme une seule partition.
La OVER clause ne supporte ORDER BYpas , ROWS, ni RANGE pour QUANTILE.
Pour plus d’informations, consultez la clause SELECT - OVER (Transact-SQL).
Types de retour
Retourne float(53).
Remarks
QUANTILE calcule un quantile continu sur les valeurs ordonnées non entréesNULL . Lorsque le quantile demandé se situe entre deux valeurs, la fonction interpole entre elles. Le résultat peut ne pas être une valeur qui existe dans les lignes d’entrée.
La forme agrégée de QUANTILE(p, numeric_expression) est équivalente à PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY numeric_expression). La forme analytique possède une sémantique continue par percentile équivalente dans chaque partition.
NULL les valeurs sont ignorées. Si toutes les valeurs d’entrée sont NULL, ou si aucune ligne ne correspond, il QUANTILE retourne NULL. Lorsque ANSI_WARNINGS est ON, éliminer NULL des valeurs produit l’avertissement agrégé standard.
Pour les mêmes valeurs nonNULL entrées et numeric_literal, QUANTILE restitue le même résultat.
DISTINCT n’est pas pris en charge. Les expressions de caractère, date, heure et date time ne sont pas prises en charge.
La QUANTILE fonction n'est pas prise en charge dans SQL Server, Azure SQL Database, Azure SQL Managed Instance, ni SQL Database dans Fabric.
Cas d’utilisation
Utilisez QUANTILE pour calculer les quartiles, percentiles et autres limites exactes de distribution avec une syntaxe concise. Par exemple, calculez les montants de demandes p90 par forfait, la latence de service p95 par région, ou les valeurs du premier trimestre, de la médiane et du troisième trimestre pour un indicateur métier.
Examples
R : Calculer les quantes d’agrégats
Cet exemple calcule le premier quartile, la médiane, le troisième quartile et le 95e percentile.
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. Calculez un quantile pour chaque groupe
Cet exemple calcule le montant du 90e percentile de la réclamation pour chaque contrat d’assurance.
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. Retourner NULL pour un groupe tout-NULL
Cet exemple revient NULL car toutes les valeurs qualifiantes sont 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. Calculer un quantile de fenêtre partitionnée
Cet exemple ajoute la latence du 95e percentile pour chaque service à chaque ligne de requête.
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;