Catégories :

Fonctions d’agrégation (général), Fonctions de la fenêtre

MEDIAN

Détermine la médiane d’un ensemble de valeurs.

Syntaxe

Fonction d’agrégation

MEDIAN( <expr> )
Copy

Fonction de fenêtre

MEDIAN( <expr> ) OVER ( [ PARTITION BY <expr2> ] )
Copy

Argument

expr

L’expression doit correspondre à un type de données numérique (INTEGER, FLOAT, DECIMAL ou équivalent).

Renvoie

Renvoie un nombre FLOAT ou DECIMAL (à virgule fixe), en fonction de l’entrée.

Notes sur l’utilisation

  • Si le nombre de valeurs non NULL est un nombre impair supérieur ou égal à 1, la valeur médiane (« centre ») des valeurs non NULL est renvoyée.

  • Si le nombre de valeurs non NULL est un nombre pair, la valeur renvoyée est égale à la moyenne des deux valeurs centrales. Par exemple, si les valeurs sont 1, 3, 5 et 20, le nombre 4 est renvoyé (la moyenne de 3 et 5).

  • Si toutes les valeurs sont NULL, cela renvoie NULL.

  • Si le nombre de valeurs non NULL est de 0, la valeur renvoyée est NULL.

  • DISTINCT n’est pas pris en charge pour cette fonction.

  • Lorsqu’il est utilisé comme une fonction de fenêtre :

    • Cette fonction ne prend pas en charge :

      • Sous-clause ORDER BY dans la clause OVER().

      • Cadres de fenêtre.

Exemples

Ceci montre comment utiliser la fonction.

Créer une table vide.

CREATE OR REPLACE TABLE aggr(k int, v decimal(10,2));
Copy

Obtenir la valeur MEDIAN pour la colonne v. La fonction renvoie NULL, car il n’y a pas de lignes.

SELECT MEDIAN (v) FROM aggr;
+------------+
| MEDIAN (V) |
|------------|
|       NULL |
+------------+
Copy

Insérer quelques lignes :

INSERT INTO aggr VALUES(1, 10), (1,20), (1, 21);
INSERT INTO aggr VALUES(2, 10), (2, 20), (2, 25), (2, 30);
INSERT INTO aggr VALUES(3, NULL);
Copy

Obtenir la valeur MEDIAN pour chaque groupe. Note : comme le nombre de valeurs du groupe k = 2 est un nombre pair, la valeur renvoyée pour ce groupe est le point médian situé entre les deux chiffres du milieu.

SELECT k, MEDIAN(v) FROM aggr GROUP BY k ORDER BY k;
+---+-----------+
| K | MEDIAN(V) |
|---+-----------|
| 1 |  20.00000 |
| 2 |  22.50000 |
| 3 |      NULL |
+---+-----------+
Copy