Résumé :dans ce tutoriel, vous apprendrez à utiliser le SQLite AVG
fonction pour calculer la valeur moyenne d'un ensemble de valeurs.
Introduction à la fonction SQLite AVG
La AVG
la fonction est une fonction d'agrégation qui calcule la valeur moyenne de toutes les valeurs non NULL au sein d'un groupe.
Ce qui suit illustre la syntaxe du AVG
fonction :
AVG([ALL | DISTINCT] expression);
Code language: SQL (Structured Query Language) (sql)
Par défaut, le AVG
la fonction utilise ALL
clause que vous la spécifiiez ou non. Cela signifie que la fonction AVG prendra toutes les valeurs non NULL lorsqu'elle calculera la valeur moyenne.
Si vous souhaitez calculer la valeur moyenne de valeurs distinctes (ou uniques), vous devez spécifier explicitement la clause DISTINCT dans expression.
Si une colonne stocke des types de données mixtes tels que entier, réel, BLOB et texte, SQLite AVG
interprète le BLOB qui ne ressemble pas à un nombre comme zéro (0).
La valeur de AVG
la fonction est toujours une valeur à virgule flottante ou un NULL
valeur. La AVG
la fonction ne renvoie qu'un NULL
valeur si et seulement si toutes les valeurs du groupe sont NULL
valeurs.
Vous pouvez faire un test rapide pour voir comment la fonction SQLite fonctionne avec différents types de données.
Tout d'abord, créez une nouvelle table nommée avg_tests
en utilisant l'instruction suivante :
CREATE TABLE avg_tests (val);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Ensuite, insérez des valeurs mixtes dans le avg_tests
tableau.
INSERT INTO avg_tests (val)
VALUES
(1),
(2),
(10.1),
(20.5),
('8'),
('B'),
(NULL),
(x'0010'),
(x'0011');
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Ensuite, interrogez les données de avg_tests
tableau.
SELECT rowid,
val
FROM avg_tests;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Après cela, vous pouvez utiliser le AVG
fonction pour calculer la moyenne des quatre premières lignes qui ne contiennent que des valeurs numériques.
SELECT
avg(val)
FROM
avg_tests
WHERE
rowid < 5;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Enfin, appliquez le AVG
fonction à toutes les valeurs dans le val
colonne des avg_tests
tableau.
SELECT
avg(val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Vous avez 9 lignes dans avg_tests
table. La ligne 7 est NULL
. Par conséquent, lors du calcul de la moyenne, le AVG
la fonction l'ignore et prend 8 lignes dans le calcul.
Les quatre premières lignes sont les valeurs entières et réelles :1,2, 10,1 et 20,5. La fonction SQLite AVG utilise ces valeurs dans le calcul.
Les 5e et 6e rangées sont de type texte car nous avons inséré les lettres « B » et « 8 ». Parce que 8 ressemble à un nombre, donc SQLite interprète B comme 0 et '8' comme 8.
Les 8e et 9e lignes sont BLOB
types qui ne ressemblent pas à des nombres, par conséquent, SQLite interprète ces valeurs comme 0.
Le AVG(cal)
expression utilise la formule suivante :
AVG(val) = (1 + 2 + 10.1 + 20.5 + 8 + 0 + 0 + 0 )/ 8 = 5.2
Code language: SQL (Structured Query Language) (sql)
Voyons comment le DISTINCT
la clause fonctionne.
Tout d'abord, insérez une nouvelle ligne dans le avg_tests
table avec une valeur existe déjà.
INSERT INTO avg_tests (val)
VALUES (10.1);
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Deuxièmement, appliquez le AVG
fonction sans DISTINCT
clause :
SELECT
avg(val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Troisièmement, ajoutez le DISTINCT
clause à AVG
fonction :
SELECT
avg(DISTINCT val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Parce que les avg_tests
table a deux lignes avec la même valeur 10.1, le AVG(DISTINCT)
ne prend qu'une ligne pour le calcul. Par conséquent, vous avez obtenu un résultat différent.
SQLite AVG
fonction exemples pratiques
Nous utiliserons les tracks
table dans l'exemple de base de données pour la démonstration.
Pour calculer la longueur moyenne de toutes les pistes en millisecondes, utilisez l'instruction suivante :
SELECT
avg(milliseconds)
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Fonction SQLite AVG avec GROUP BY
clause
Pour calculer la longueur moyenne des pistes pour chaque album, vous utilisez le AVG
fonction avec le GROUP BY
clause.
Tout d'abord, le GROUP BY
La clause regroupe un ensemble de pistes par albums. Ensuite, le AVG
calcule la longueur moyenne des pistes pour chaque album.
Voir la déclaration suivante.
SELECT
albumid,
avg(milliseconds)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite AVG
fonction avec INNER JOIN
exemple de clause
Pour obtenir le titre de l'album avec l'albumid
colonne, vous utilisez la clause INNER JOIN dans l'instruction ci-dessus comme la requête suivante :
SELECT
tracks.AlbumId,
Title,
round(avg(Milliseconds), 2) avg_length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Notez que nous avons utilisé le ROUND
fonction pour arrondir la valeur flottante à 2 chiffres à droite de la virgule décimale.
Fonction SQLite AVG avec exemple de clause HAVING
Vous pouvez utiliser soit le AVG
fonction ou l'alias de sa colonne dans la clause HAVING pour filtrer les groupes. L'instruction suivante n'obtient que les albums dont la longueur moyenne est comprise entre 100 000 et 200 000.
SELECT
tracks.albumid,
title,
round(avg(milliseconds),2) avg_leng
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid
HAVING
avg_leng BETWEEN 100000 AND 200000;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Dans ce tutoriel, nous vous avons montré comment utiliser le SQLite AVG
fonction pour calculer les valeurs moyennes des valeurs non NULL dans un groupe.