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 MEDIAN fonction retourne la médiane exacte, ou le 50e percentile, des valeurs nonNULL numériques. Vous pouvez l’utiliser comme fonction d’agrégation et de fenêtre (analytique) :
- Utilisation agrégée : Retourne la médiane pour un groupe entier.
- Utilisation des fenêtres : Retourne la médiane pour chaque partition tout en préservant la sortie au niveau des lignes.
Conventions de la syntaxe Transact-SQL
Syntax
Syntaxe de la fonction d’agrégation :
MEDIAN ( numeric_expression )
Syntaxe de la fonction analytique :
MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_expression
L’expression numérique dont la médiane est calculée. Les types numériques exacts pris en charge sont int, bigint, smallint, tinyintnumeric, decimal, bit, 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 MEDIAN.
Pour plus d’informations, consultez la clause SELECT - OVER (Transact-SQL).
Types de retour
Retourne float(53).
Remarks
MEDIAN calcule le 50e percentile continu des valeurs ordonnées non entréesNULL . Pour un nombre pair de valeurs d’entrée, la fonction interpole entre les deux valeurs du milieu. Le résultat peut ne pas être une valeur qui existe dans les lignes d’entrée.
MEDIAN est équivalent à PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY numeric_expression) pour l’usage agrégé. 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 MEDIAN retourne NULL. Lorsque ANSI_WARNINGS est ON, éliminer NULL des valeurs produit l’avertissement agrégé standard.
MEDIAN est non déterministe car les calculs en virgule flottante sur des chemins d’exécution parallèles peuvent produire de légères variations. Pour plus d’informations, consultez Fonctions déterministes et non déterministes.
DISTINCT n’est pas pris en charge. Les expressions de caractère, date, heure et date time ne sont pas prises en charge.
La MEDIAN fonction est disponible dans Fabric Data Warehouse et le point d’arrivée SQL Analytics de Fabric items. La MEDIAN 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
À utiliser MEDIAN lorsqu’une moyenne pourrait être déformée par des valeurs exceptionnellement élevées ou basses. Par exemple, la valeur médiane de l’ordre, le temps de réponse ou le montant de la réclamation représentent souvent une observation typique plus clairement que la moyenne arithmétique. Le formulaire agrégé résume les groupes, et le formulaire analytique ajoute un benchmark de partition à chaque ligne de détail.
Examples
R : Calculer une médiane agrégée
Cet exemple renvoie la médiane de huit valeurs. Comme l’entrée a un nombre pair de lignes, MEDIAN elle interpole entre 4 et 5.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Le résultat est 4.5.
B. Calculez une médiane pour chaque groupe
Cet exemple calcule le montant médian des commandes pour chaque région de vente.
WITH SalesOrders AS (
SELECT *
FROM (VALUES
('North', 120.00),
('North', 220.00),
('North', 320.00),
('South', 150.00),
('South', 250.00),
('South', 450.00)
) AS v(region, order_amount)
)
SELECT
region,
MEDIAN(order_amount) AS MedianOrderAmount
FROM SalesOrders
GROUP BY region;
C. Ignorez les valeurs NULL
Cet exemple ignore l’entrée NULL et calcule la médiane à partir des valeurs restantes.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Si chaque valeur d’entrée est NULL, la fonction retourne NULL.
D. Calculer un terre-plein central de fenêtre partitionné
Cet exemple ajoute la latence médiane 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,
MEDIAN(latency_ms) OVER (PARTITION BY service) AS ServiceMedianLatency
FROM ServiceLatency;