Le SQLite avg()
renvoie la valeur moyenne de toutes les valeurs non NULL d'un groupe.
Il accepte un argument, qui est la valeur ou le groupe de valeurs.
Exemple
Prenez le tableau suivant :
ProductId ProductName Prix ---------- --------------------- ----------1 Widgets bleus (Lot de 6) 389,45 2 Porte-widget 139,5 3 Ouvre-widget 89,27 4 Foobar Set 120,0
Nous pouvons utiliser le avg()
fonction pour obtenir la valeur moyenne du Prix colonne. Comme ceci :
SELECT avg(Price) FROM Products;
Résultat :
184.555
Comment une clause WHERE affecte le résultat
Si votre requête utilise un WHERE
clause, la moyenne sera calculée après le WHERE
clause a pris effet. En d'autres termes, vous pouvez utiliser un WHERE
clause pour s'assurer que la avg()
calcule uniquement les lignes qui vous intéressent.
Voici ce qui se passe si j'ajoute un WHERE
clause à l'exemple précédent.
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Résultat :
206.073333333333
Arrondi du résultat
Le résultat est renvoyé sous forme de valeur à virgule flottante (sauf s'il est NULL). Vous pouvez utiliser le round()
fonction pour arrondir la valeur selon les besoins.
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Résultat :
206.07
Limiter les résultats
La LIMIT
la clause n'affecte pas le calcul de avg()
fonction - une seule ligne est renvoyée avec le avg()
fonctionner quand même.
SELECT avg(Price)
FROM Products
LIMIT 1;
Résultat :
184.555
Cela dit, si vous fournissez une limite de zéro, rien ne sera renvoyé.
Chaînes et BLOB
Les valeurs de chaîne et de BLOB qui ne ressemblent pas à des nombres sont interprétées comme 0.
SELECT avg(ProductName) FROM Products;
Résultat :
0.0
Arguments NULL
S'il n'y a pas d'entrées non NULL, la fonction avg() renvoie NULL.
SELECT avg(NULL);
Résultat :
(Ce résultat est NULL).
Cependant, s'il y a au moins un argument non NULL, il ne renverra pas NULL.
Pour illustrer cela, je vais insérer ici une nouvelle ligne, mais laisser le Prix colonne à NULL :
INSERT INTO Products (ProductId, ProductName) VALUES (5, 'Red Widget'); SELECT * FROM Products;
Résultat :
ProductId ProductName Prix ---------- --------------------- ----------1 Widgets bleus (Lot de 6) 389,45 2 Porte-widget 139,5 3 Ouvre-widget 89,27 4 Ensemble Foobar 120,0 5 Widget rougeAinsi, la dernière ligne n'a pas de prix - le Prix colonne est NULL.
Maintenant, quand j'utilise le
avg()
fonction, elle renvoie toujours la moyenne de toutes les lignes non NULL.SELECT avg(Price) FROM Products;
Résultat :
184.555Le mot-clé DISTINCT
Vous pouvez utiliser le
DISTINCT
mot-clé pour calculer la moyenne des seules valeurs distinctes de la colonne. Cela a pour effet de supprimer toutes les valeurs en double du calcul.Voir Ajuster vos résultats Avg() dans SQLite avec le mot-clé DISTINCT pour un exemple.