Fonctions d'agrégation en SQL - SUM, COUNT, AVG, MIN et MAX
La fonction d'agrégation SQL est utilisée pour effectuer les calculs sur plusieurs lignes d'une seule colonne d'une table. Elle retourne une valeur unique.
Elle est également utilisée pour résumer les données.
La norme ISO définit cinq fonctions d'agrégation, à savoir:
-
COUNT
-
SUM
-
AVG
-
MIN
-
MAX
La table échantillon - Employes
Table - Employes +----+---------+-----+---------+------------+------+ | Id | Nom | Age | Salaire | Profession | Dep | +----+---------+-----+---------+------------+------+ | 1 | Ismail | 25 | 6000.00 | Assistant | 2 | | 2 | Mohamed | 30 | 8000.40 | Directeur | 1 | | 3 | Fatima | 29 | 6000.00 | Directeur | 3 | | 4 | Dounia | 30 | 7000.00 | Assistant | 4 | | 5 | Omar | 29 | 9000.00 | Ingenieur | 1 | | 7 | Mostafa | 29 | 7500.00 | Ingenieur | NULL | +----+---------+-----+---------+------------+------+
COUNT
La fonction COUNT est utilisée pour compter le nombre de lignes dans une table de base de données. Il peut fonctionner sur les types de données numériques et non numériques.
La fonction COUNT utilise COUNT(*) qui renvoie le nombre de toutes les lignes d'une table spécifiée. COUNT(*) considère les doublons et Null.
Syntaxe :
COUNT(*) // ou COUNT( [ALL|DISTINCT] nom_colonne )
Exemple 1 :
La requête suivante comptera les enregistrements dans la table Employes
SELECT count(*) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+----------+ | count(*) | +----------+ | 6 | +----------+
Exemple 2 :
Compter les employés affectés à un département
SELECT count(Dep) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+------------+ | count(Dep) | +------------+ | 5 | +------------+
Exemple 3 :
Compter les différents âges de la table Employes, (sans doublons)
SELECT count(DISTINCT Age) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+---------------------+ | count(DISTINCT Age) | +---------------------+ | 3 | +---------------------+
SUM
La fonction SUM renvoie la somme de toutes les valeurs de la colonne spécifiée. SUM fonctionne uniquement sur les champs numériques.
Syntaxe :
SUM( [ALL|DISTINCT] nom_colonne )
Exemple 4 :
La requête suivante renvoie la somme des salaires
SELECT SUM(Salaire) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+--------------+ | SUM(Salaire) | +--------------+ | 43500.40 | +--------------+
Exemple 5 :
La requête suivante renvoie la somme des âges sans compter les valeurs dupliquées
SELECT SUM(DISTINCT Age) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+-------------------+ | SUM(DISTINCT Age) | +-------------------+ | 84 | +-------------------+
AVG
La fonction AVG renvoie la moyenne des valeurs d'une colonne spécifiée. Tout comme la fonction SUM, elle ne fonctionne que sur les types de données numériques.
Syntaxe :
AVG( [ALL|DISTINCT] nom_colonne )
Exemple 6 :
La requête suivante renvoie le salaire moyen de la table Employes
SELECT AVG(Salaire) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+--------------+ | AVG(Salaire) | +--------------+ | 7250.066667 | +--------------+
MIN
La fonction MIN est utilisée pour déterminer la plus petite valeur de toutes les valeurs sélectionnées d'une colonne.
Syntaxe :
MIN( [ALL|DISTINCT] nom_colonne )
Exemple 7 :
La requête suivante renvoie le salaire minimum de la table Employes
SELECT MIN(Salaire) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+--------------+ | MIN(Salaire) | +--------------+ | 6000.00 | +--------------+
MAX
Comme son nom l'indique, la fonction MAX est l'opposé de la fonction MIN. Elle renvoie la plus grande valeur de toutes les valeurs sélectionnées d'une colonne.
Syntaxe :
MAX( [ALL|DISTINCT] nom_colonne )
Exemple 8 :
La requête suivante renvoie le salaire maximum de la table Employes
SELECT MAX(Salaire) FROM Employes;
Cette requête produira le jeu de résultats suivant :
+--------------+ | MAX(Salaire) | +--------------+ | 9000.00 | +--------------+