Problème :
Vous souhaitez calculer la moyenne des nombres stockés dans une colonne.
Exemple :
Notre base de données a une table nommée sale
avec des données dans les colonnes suivantes :id
, city
, year
, et amount
.
identifiant | ville | année | montant |
---|---|---|---|
1 | Los Angeles | 2017 | 2345.50 |
2 | Chicago | 2018 | 1345.46 |
3 | Annandale | 2016 | 900.56 |
4 | Annandale | 2017 | 23230.22 |
5 | Los Angeles | 2018 | 12456.20 |
6 | Chicago | 2017 | 89000.40 |
7 | Annandale | 2018 | 21005.77 |
8 | Chicago | 2016 | 2300.89 |
Calculons les ventes moyennes, quelle que soit la ville ou l'année.
Solution :
SELECT AVG(amount) as avg_amount FROM sale;
Voici le résultat :
montant_avg |
---|
19073.125000 |
Discussion :
Si vous souhaitez calculer la moyenne des valeurs numériques stockées dans une colonne, vous pouvez le faire en utilisant le AVG()
fonction d'agrégation ; il prend comme argument le nom de la colonne dont on veut calculer la moyenne. Si vous n'avez pas spécifié d'autres colonnes dans le SELECT
clause, la moyenne sera calculée pour tous les enregistrements de la table.
Bien sûr, puisqu'il s'agit d'une fonction d'agrégation, AVG()
peut également être utilisé avec des groupes. Par exemple, si nous souhaitons trouver la vente moyenne par ville, nous pouvons écrire cette requête :
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
La moyenne est calculée pour chaque ville :
ville | montant |
---|---|
Los Angeles | 7400.850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
De plus, si la moyenne doit être arrondie, vous pouvez passer le résultat de la AVG()
fonction dans ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;