SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment fonctionne SQLite Avg()

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 rouge 

Ainsi, 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.555

Le 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.