Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
MEDIANfonction
Calcule la valeur médiane de la plage de valeurs. Les valeurs NULL
de la plage sont ignorées.
MEDIANest une fonction de distribution inverse qui suppose un modèle de distribution continue.
MEDIANest un cas particulier dePERCENTILE_CONT.
Syntaxe
MEDIAN(median_expression)
Arguments
- median_expression
-
Colonne cible ou expression sur laquelle la fonction opère.
Types de données
Le type de retour est déterminé par le type de données de median_expression. Le tableau suivant illustre le type de retour de chaque type de données median_expression.
Type d’entrée | Type de retour |
---|---|
INT2 , INT4 , INT8 , NUMERIC , DECIMAL |
DECIMAL |
FLOAT , DOUBLE |
DOUBLE |
DATE |
DATE |
TIMESTAMP |
TIMESTAMP |
TIMESTAMPTZ |
TIMESTAMPTZ |
Notes d’utilisation
Si l'argument median_expression est un type de DECIMAL
données défini avec une précision maximale de 38 chiffres, il est possible qu'il MEDIAN renvoie un résultat inexact ou une erreur. Si la valeur renvoyée par la MEDIAN fonction dépasse 38 chiffres, le résultat est tronqué pour être ajusté, ce qui entraîne une perte de précision. Si, au cours de l’interpolation, un résultat intermédiaire dépasse la précision maximale, un dépassement de capacité numérique se produit et la fonction renvoie une erreur. Pour éviter ces conditions, nous vous recommandons d’utiliser un type de données avec une précision inférieure ou l’argument median_expression avec une précision inférieure.
Si une instruction inclut plusieurs appels à des fonctions d'agrégation basées sur le tri (LISTAGGCONT, PERCENTILE _ ouMEDIAN), elles doivent toutes utiliser les mêmes valeurs ORDER BY. Notez qu'un ordre implicite est MEDIAN appliqué en fonction de la valeur de l'expression.
Par exemple, l’instruction suivante renvoie une erreur.
SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid;
An error occurred when executing the SQL command: SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid; ERROR: within group ORDER BY clauses for aggregate functions must be the same
L’instruction suivante s’exécute avec succès.
SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(salesid) FROM sales GROUP BY salesid, pricepaid;
Exemples
Les exemples suivants utilisent la base de données TICKIT d'exemple. Pour de plus amples informations, veuillez consulter Exemple de base de données.
L'exemple suivant montre que cela MEDIAN produit les mêmes résultats que PERCENTILE _ CONT (0,5).
SELECT TOP 10 DISTINCT sellerid, qtysold, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY qtysold), MEDIAN(qtysold) FROM sales GROUP BY sellerid, qtysold;
+----------+---------+-----------------+--------+ | sellerid | qtysold | percentile_cont | median | +----------+---------+-----------------+--------+ | 2 | 2 | 2 | 2 | | 26 | 1 | 1 | 1 | | 33 | 1 | 1 | 1 | | 38 | 1 | 1 | 1 | | 43 | 1 | 1 | 1 | | 48 | 2 | 2 | 2 | | 48 | 3 | 3 | 3 | | 77 | 4 | 4 | 4 | | 85 | 4 | 4 | 4 | | 95 | 2 | 2 | 2 | +----------+---------+-----------------+--------+
L’exemple suivant permet de trouver la quantité médiane vendue pour chaque ID de vendeur.
SELECT sellerid, MEDIAN(qtysold) FROM sales GROUP BY sellerid ORDER BY sellerid LIMIT 10;
+----------+--------+ | sellerid | median | +----------+--------+ | 1 | 1.5 | | 2 | 2 | | 3 | 2 | | 4 | 2 | | 5 | 1 | | 6 | 1 | | 7 | 1.5 | | 8 | 1 | | 9 | 4 | | 12 | 2 | +----------+--------+
Pour vérifier les résultats de la requête précédente pour le premier ID de vendeur, utilisez l’exemple suivant.
SELECT qtysold FROM sales WHERE sellerid=1;
+---------+ | qtysold | +---------+ | 2 | | 1 | +---------+