APPROX_MEDIAN (Transact-SQL)

S’applique à :Point de terminaison d’analytique SQL dans Microsoft Fabric et Warehouse dans Microsoft Fabric

La APPROX_MEDIAN fonction retourne une médiane approximative, ou 50e percentile, de valeurs nonNULL numériques. Vous pouvez l’utiliser comme fonction d’agrégation et de fenêtre (analytique) :

  • Utilisation agrégée : Restitue une médiane approximative pour un groupe entier.
  • Utilisation des fenêtres : Retourne une médiane approximative 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 :

APPROX_MEDIAN ( numeric_expression )

Syntaxe de la fonction analytique :

APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )

Arguments

numeric_expression

L’expression numérique dont la médiane approximative est calculée. 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 APPROX_MEDIAN.

Pour plus d’informations, consultez la clause SELECT - OVER (Transact-SQL).

Types de retour

Retourne float(53).

Remarks

APPROX_MEDIAN estime le 50e percentile continu des valeurs ordonnées non entréesNULL . Utilisez MEDIANE lorsque vous avez besoin d’un résultat exact.

Les résultats approximatifs peuvent différer légèrement des résultats exacts MEDIAN et varier d’une exécution à l’autre en raison des plans d’exécution et des chemins de fusion parallèles. APPROX_MEDIAN n’est pas déterministe. Pour plus d’informations, consultez Fonctions déterministes et non déterministes.

NULL les valeurs sont ignorées. Si toutes les valeurs d’entrée sont NULL, ou si aucune ligne ne correspond, il APPROX_MEDIAN retourne NULL. Lorsque ANSI_WARNINGS est ON, éliminer NULL des valeurs produit l’avertissement agrégé standard.

APPROX_MEDIAN vise à réduire la latence et l’utilisation de la mémoire par rapport aux calculs exacts MEDIAN sur de grands ensembles de données.

DISTINCT n’est pas pris en charge. Les expressions de caractère, date, heure et date time ne sont pas prises en charge.

La APPROX_MEDIAN fonction est disponible dans Fabric Data Warehouse et le point d’arrivée SQL Analytics de Fabric items. La APPROX_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 APPROX_MEDIAN pour des tableaux de bord à grande échelle, des analyses exploratoires et des rapports groupés où une estimation proche suffit et où la performance des requêtes compte plus qu’une médiane exacte. Des exemples courants incluent la valeur médiane approximative de l’ordre, la latence du service et les mesures de télémétrie.

Examples

R : Calculer une médiane approximative agrégée

Cet exemple estime la médiane de huit valeurs.

SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);

Le résultat est proche de la médiane exacte de 4.5, mais il peut varier légèrement.

B. Calculez une médiane approximative pour chaque groupe

Cet exemple estime 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,
    APPROX_MEDIAN(order_amount) AS ApproxMedianOrderAmount
FROM SalesOrders
GROUP BY region;

C. Ignorez les valeurs NULL

Cet exemple ignore NULL les valeurs lors de l’estimation de la médiane.

SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);

Si chaque valeur d’entrée est NULL, la fonction retourne NULL.

D. Calculer une médiane approximative d’une fenêtre partitionnée

Cet exemple ajoute la latence médiane approximative de 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,
    APPROX_MEDIAN(latency_ms) OVER (PARTITION BY service) AS ServiceApproxMedianLatency
FROM ServiceLatency;