Catégories :

Fonctions d’agrégation (General) , Fonctions de fenêtre

MEDIAN

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

Syntaxe

Fonction d’agrégation

MEDIAN( <expr> )

Fonction de fenêtre

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

Argument

expr

The expression must evaluate to a numeric data type (INTEGER, FLOAT, DECIMAL, or equivalent).

Renvoie

Returns a FLOAT or DECIMAL (fixed-point) number, depending upon the input.

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.

  • Lorsque cette fonction est appelée en tant que fonction de fenêtre, elle ne prend pas en charge :

    • Une clause ORDER BY dans la clause OVER.

    • Cadres de fenêtre explicites.

Exemples

Ceci montre comment utiliser la fonction.

Créer une table vide.

CREATE OR REPLACE TABLE aggr (k INT, v DECIMAL(10,2));

Get the MEDIAN value for column v. The function returns NULL because there are no rows.

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

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);

Get the MEDIAN value for each group. Note that because the number of values in group k = 2 is an even number, the returned value for that group is the mid-point between the two middle numbers.

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