Catégories :

Fonctions d’agrégation (Général) , Syntaxe et utilisation des fonctions de fenêtre (Général)

VAR_SAMP

Renvoie la variance d’échantillon des enregistrements non NULL dans un groupe. Si tous les enregistrements d’un groupe sont NULL, un NULL est renvoyé.

Alias :

VARIANCE , VARIANCE_SAMP

Syntaxe

Fonction d’agrégation

VAR_SAMP( [DISTINCT] <expr1> )
Copy

Fonction de fenêtre

VAR_SAMP( <expr1> ) OVER (
                         [ PARTITION BY <expr2> ]
                         [ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
                         )
Copy

Pour plus de détails sur la syntaxe window_frame, voir Syntaxe et utilisation des fonctions de fenêtre.

Arguments

expr1

expr1 doit correspondre à l’un des types de données numériques.

expr2

C’est l’expression à partir de laquelle effectuer la partition.

expr3

C’est l’expression à partir de laquelle effectuer le classement dans chaque partition.

Renvoie

Le type de données de la valeur renvoyée est NUMBER(<précision>, <échelle>). L’échelle dépend des valeurs en cours de traitement.

Notes sur l’utilisation

  • Pour les entrées à enregistrement unique, VAR_SAMP, VARIANCE et VARIANCE_SAMP renvoient tous NULL. Cela est différent du comportement Oracle, où VAR_SAMP renvoie NULL pour un seul enregistrement et VARIANCE renvoie 0.

  • Lorsqu’elle est transmise à une expression VARCHAR, cette fonction convertit implicitement l’entrée en valeurs à virgule flottante. Si la conversion ne peut pas être effectuée, une erreur est renvoyée.

  • Lorsque cette fonction est appelée en tant que fonction de fenêtre :

    • La syntaxe autorise le mot-clé DISTINCT, mais il est ignoré.

    • Si vous ne spécifiez pas de cadre de fenêtre, le cadre de fenêtre implicite suivant est utilisé :

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

      Pour plus d’informations sur les cadres de fenêtre, y compris la syntaxe, les notes sur l’utilisation et les exemples, voir Syntaxe et utilisation des fonctions de fenêtre.

Exemples

Cet exemple montre comment utiliser la fonction VAR_SAMP :

Créez et remplissez une table :

create table aggr(k int, v decimal(10,2), v2 decimal(10, 2));
insert into aggr values 
   (1, 10, null),
   (2, 10, 11), 
   (2, 20, 22), 
   (2, 25, null), 
   (2, 30, 35);
Copy

Interrogez la table :

SELECT k, var_samp(v), var_samp(v2) 
    FROM aggr 
    GROUP BY k
    ORDER BY k;
+---+---------------+----------------+
| K |   VAR_SAMP(V) |   VAR_SAMP(V2) |
|---+---------------+----------------|
| 1 |          NULL |           NULL |
| 2 | 72.9166666667 | 144.3333333333 |
+---+---------------+----------------+
Copy