Fonction de fenêtrage MEDIAN - Amazon Redshift

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.

Fonction de fenêtrage MEDIAN

Calcule la valeur médiane de la plage de valeurs dans une fenêtre ou une partition. Les valeurs NULL de la plage sont ignorées.

MEDIAN est une fonction de distribution inverse qui suppose un modèle de distribution continue.

Syntaxe

MEDIAN ( median_expression ) OVER ( [ PARTITION BY partition_expression ] )

Arguments

median_expression

Expression, comme un nom de colonne, qui fournit les valeurs pour lesquelles déterminer la médiane. L’expression doit disposer d’un type de données numériques ou datetime ou être convertible implicitement en une.

OVER

Clause qui spécifie le partitionnement de fenêtrage. La clause OVER ne peut pas contenir d’ordre de fenêtrage ou de spécification de cadre de fenêtrage.

PARTITION BY partition_expression

Facultatif. Expression qui définit la plage d’enregistrements de chaque groupe dans la clause OVER.

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

Notes d’utilisation

Si l’argument median_expression est un type de données DECIMAL défini avec la précision maximale de 38 chiffres, il est possible que MEDIAN renvoie un résultat inexact ou une erreur. Si la valeur de retour de la fonction MEDIAN dépasse 38 chiffres, le résultat est tronqué pour s’adapter, 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.

Par exemple, une fonction SUM avec un argument DECIMAL renvoie une précision par défaut de 38 chiffres. L’échelle du résultat est identique à celle de l’argument. Par conséquent, par exemple, une fonction SUM appliquée à une colonne DECIMAL(5,2) renvoie un type de données DECIMAL(38,2).

L’exemple suivant utilise une fonction SUM dans l’argument median_expression d’une fonction MEDIAN. Le type de données de la colonne PRICEPAID est DECIMAL (8,2), la fonction SUM renvoie donc DECIMAL(38,2).

select salesid, sum(pricepaid), median(sum(pricepaid)) over() from sales where salesid < 10 group by salesid;

Pour éviter une perte potentielle de précision ou une erreur de dépassement de capacité, convertissez le résultat en un type de données DECIMAL avec une précision inférieure, comme dans l’exemple suivant.

select salesid, sum(pricepaid), median(sum(pricepaid)::decimal(30,2)) over() from sales where salesid < 10 group by salesid;

Exemples

L’exemple suivant calcule le volume de ventes médian de chaque vendeur :

select sellerid, qty, median(qty) over (partition by sellerid) from winsales order by sellerid; sellerid qty median --------------------------- 1 10 10.0 1 10 10.0 1 30 10.0 2 20 20.0 2 20 20.0 3 10 17.5 3 15 17.5 3 20 17.5 3 30 17.5 4 10 25.0 4 40 25.0

Pour obtenir une description de la table WINSALES, consultez Exemple de tableau contenant des exemples de fonctions de fenêtrage.