Numérique et Sciences Informatiques > Bases de Données > Langage SQL (Structured Query Language) > Fonctions d'agrégation (COUNT, SUM, AVG, MIN, MAX)
Fonctions d'agrégation SQL : Un Guide Détaillé
Découvrez en détail les fonctions d'agrégation en SQL (COUNT, SUM, AVG, MIN, MAX) avec des exemples concrets et des explications claires, spécialement conçues pour les élèves de lycée en NSI.
Introduction aux Fonctions d'Agrégation
Les fonctions d'agrégation en SQL permettent de réaliser des opérations sur un ensemble de lignes d'une table pour renvoyer une seule valeur. Elles sont extrêmement utiles pour obtenir des statistiques et des résumés de données. Dans ce guide, nous allons explorer COUNT
, SUM
, AVG
, MIN
, et MAX
.
La fonction COUNT()
COUNT()
permet de compter le nombre de lignes dans une table ou le nombre de valeurs non NULL dans une colonne. Il existe deux principales utilisations:
Exemple: Supposons une table nommée COUNT(*)
: Compte toutes les lignes de la table, y compris celles avec des valeurs NULL.COUNT(nom_colonne)
: Compte le nombre de valeurs non NULL dans la colonne spécifiée.Etudiants
avec les colonnes id
, nom
, et age
.
SELECT COUNT(*) FROM Etudiants;
Retournera le nombre total d'étudiants dans la table.
SELECT COUNT(age) FROM Etudiants;
Retournera le nombre d'étudiants dont l'âge est renseigné (non NULL).
La fonction SUM()
SUM()
permet de calculer la somme des valeurs d'une colonne numérique. Elle ignore les valeurs NULL.
Exemple: Supposons une table nommée Ventes
avec les colonnes id
, produit
, et montant
.
SELECT SUM(montant) FROM Ventes;
Retournera le montant total des ventes.
Important: SUM()
ne peut être utilisée que sur des colonnes de type numérique.
La fonction AVG()
AVG()
permet de calculer la moyenne des valeurs d'une colonne numérique. Elle ignore également les valeurs NULL. Le résultat est généralement un nombre décimal.
Exemple: En utilisant la table Etudiants
avec la colonne age
:
SELECT AVG(age) FROM Etudiants;
Retournera l'âge moyen des étudiants.
Les fonctions MIN() et MAX()
MIN()
et MAX()
permettent de trouver respectivement la valeur minimale et la valeur maximale d'une colonne. Elles peuvent être utilisées sur des colonnes numériques, des colonnes de type texte (chaînes de caractères), ou des colonnes de type date.
Exemples:
SELECT MIN(age) FROM Etudiants;
Retournera l'âge minimum des étudiants.SELECT MAX(montant) FROM Ventes;
Retournera le montant de vente le plus élevé.SELECT MIN(nom) FROM Etudiants;
Retournera le nom de l'étudiant qui arrive en premier par ordre alphabétique.
Utilisation avec la clause GROUP BY
Les fonctions d'agrégation sont souvent utilisées avec la clause GROUP BY
pour regrouper les lignes par une ou plusieurs colonnes et calculer des statistiques pour chaque groupe. Cela permet d'obtenir des informations plus détaillées et segmentées.
Exemple: Supposons une table nommée Commandes
avec les colonnes id_client
, produit
, et montant
.
SELECT id_client, SUM(montant) FROM Commandes GROUP BY id_client;
Retournera le montant total des commandes pour chaque client.
SELECT produit, AVG(montant) FROM Commandes GROUP BY produit;
Retournera le montant moyen des commandes pour chaque produit.
Utilisation de la clause HAVING
La clause HAVING
est utilisée avec GROUP BY
pour filtrer les groupes après l'agrégation. Elle permet de ne conserver que les groupes qui satisfont une certaine condition.
Exemple:
SELECT id_client, SUM(montant) FROM Commandes GROUP BY id_client HAVING SUM(montant) > 100;
Retournera les clients dont le montant total des commandes est supérieur à 100.
Combinaison de Fonctions d'Agrégation
Il est possible de combiner plusieurs fonctions d'agrégation dans une même requête pour obtenir différentes statistiques simultanément.
Exemple:
SELECT COUNT(*), SUM(montant), AVG(montant), MIN(montant), MAX(montant) FROM Ventes;
Retournera le nombre total de ventes, le montant total des ventes, le montant moyen des ventes, le montant minimum des ventes, et le montant maximum des ventes.
Ce qu'il faut retenir
COUNT
, SUM
, AVG
, MIN
, MAX
) permettent de résumer des données.COUNT(*)
compte toutes les lignes, COUNT(colonne)
compte les valeurs non NULL.SUM
calcule la somme des valeurs d'une colonne numérique.AVG
calcule la moyenne des valeurs d'une colonne numérique.MIN
et MAX
trouvent respectivement la valeur minimale et maximale.GROUP BY
permet de regrouper les lignes pour appliquer les fonctions d'agrégation par groupe.HAVING
permet de filtrer les groupes après l'agrégation.
FAQ
-
Quelle est la différence entre COUNT(*) et COUNT(nom_colonne) ?
COUNT(*)
compte toutes les lignes de la table, y compris celles avec des valeurs NULL.COUNT(nom_colonne)
compte uniquement les lignes où la colonne spécifiée n'est pas NULL. -
Que se passe-t-il si j'utilise SUM() sur une colonne contenant des valeurs NULL ?
La fonctionSUM()
ignore les valeurs NULL. Elle calcule la somme uniquement des valeurs non NULL. -
Puis-je utiliser des fonctions d'agrégation sur des colonnes de type texte ?
Oui,MIN()
etMAX()
peuvent être utilisées sur des colonnes de type texte pour trouver respectivement la valeur minimale et maximale selon l'ordre alphabétique. -
Quelle est la différence entre WHERE et HAVING ?
La clauseWHERE
filtre les lignes avant l'application des fonctions d'agrégation et du regroupement. La clauseHAVING
filtre les groupes après l'application des fonctions d'agrégation et du regroupement. On ne peut utiliserHAVING
sansGROUP BY
.