Fonctions d'agrégation en SQL - SUM, COUNT, AVG, MIN et MAX

23 Sep 2019 23 Sep 2019 32029 vues ESSADDOUKI Mostafa 6 min de lecture

Les fonctions d'agrégation en SQL

Définition

La fonction d'agrégation SQL est utilisée pour effectuer des 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.

Les cinq fonctions standard

La norme ISO définit cinq fonctions d'agrégation :

  • COUNT : compte le nombre de lignes
  • SUM : calcule la somme des valeurs
  • AVG : calcule la moyenne des valeurs
  • MIN : trouve la valeur minimale
  • MAX : trouve la valeur maximale
Remarque importante

Toutes les fonctions d'agrégation excluent par défaut les valeurs NULL avant de travailler sur les données.

Table d'exemple

Pendant ce cours, nous allons travailler sur la table suivante :

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 |
+----+---------+-----+---------+------------+------+

1. Fonction COUNT

Description

La fonction COUNT est utilisée pour compter le nombre de lignes dans une table. Elle peut fonctionner sur les types de données numériques et non numériques.

Syntaxe

   
COUNT SQL
COUNT(*)
-- ou
COUNT( [ALL|DISTINCT] nom_colonne )
  • COUNT(*) : compte toutes les lignes d'une table, y compris les doublons et les valeurs NULL.
  • COUNT(colonne) : compte les lignes où la colonne n'est pas NULL.
  • COUNT(DISTINCT colonne) : compte les valeurs distinctes non NULL.

  Exemple n°1

Compter tous les enregistrements dans la table Employes.

SELECT COUNT(*) FROM Employes;
Résultat
+----------+
| COUNT(*) |
+----------+
|        6 |
+----------+

  Exemple n°2

Compter les employés affectés à un département (Dep non NULL).

SELECT COUNT(Dep) FROM Employes;
Résultat
+------------+
| COUNT(Dep) |
+------------+
|          5 |
+------------+

Note : La valeur NULL dans la colonne Dep (Mostafa) n'est pas comptée.

  Exemple n°3

Compter les différents âges des employés (sans doublons).

SELECT COUNT(DISTINCT Age) FROM Employes;
Résultat
+---------------------+
| COUNT(DISTINCT Age) |
+---------------------+
|                   3 |
+---------------------+

Les âges distincts sont : 25, 29, 30.

2. Fonction SUM

Description

La fonction SUM renvoie la somme de toutes les valeurs d'une colonne spécifiée. Elle ne fonctionne que sur les champs numériques.

Syntaxe

   
SUM SQL
SUM( [ALL|DISTINCT] nom_colonne )

  Exemple n°4

Calculer la somme des salaires de tous les employés.

SELECT SUM(Salaire) FROM Employes;
Résultat
+--------------+
| SUM(Salaire) |
+--------------+
|     43500.40 |
+--------------+

  Exemple n°5

Calculer la somme des âges sans compter les valeurs dupliquées.

SELECT SUM(DISTINCT Age) FROM Employes;
Résultat
+-------------------+
| SUM(DISTINCT Age) |
+-------------------+
|                84 |
+-------------------+

Calcul : 25 + 29 + 30 = 84.

3. Fonction AVG

Description

La fonction AVG renvoie la moyenne des valeurs d'une colonne spécifiée. Comme SUM, elle ne fonctionne que sur les types numériques.

Syntaxe

   
AVG SQL
AVG( [ALL|DISTINCT] nom_colonne )

  Exemple n°6

Calculer le salaire moyen des employés.

SELECT AVG(Salaire) FROM Employes;
Résultat
+--------------+
| AVG(Salaire) |
+--------------+
|  7250.066667 |
+--------------+

4. Fonction MIN

Description

La fonction MIN est utilisée pour déterminer la plus petite valeur parmi toutes les valeurs sélectionnées d'une colonne.

Syntaxe

   
MIN SQL
MIN( [ALL|DISTINCT] nom_colonne )

  Exemple n°7

Trouver le salaire minimum dans la table Employes.

SELECT MIN(Salaire) FROM Employes;
Résultat
+--------------+
| MIN(Salaire) |
+--------------+
|      6000.00 |
+--------------+

5. Fonction MAX

Description

La fonction MAX est l'opposé de MIN. Elle renvoie la plus grande valeur parmi toutes les valeurs sélectionnées d'une colonne.

Syntaxe

   
MAX SQL
MAX( [ALL|DISTINCT] nom_colonne )

  Exemple n°8

Trouver le salaire maximum dans la table Employes.

SELECT MAX(Salaire) FROM Employes;
Résultat
+--------------+
| MAX(Salaire) |
+--------------+
|      9000.00 |
+--------------+

Récapitulatif des fonctions d'agrégation

FonctionDescriptionTypes supportésExemple sur la table
COUNT(*)Compte toutes les lignesTous types6 (tous les employés)
COUNT(Dep)Compte les valeurs non NULLTous types5 (employés avec département)
COUNT(DISTINCT Age)Compte les valeurs distinctesTous types3 (âges différents)
SUM(Salaire)Somme des valeursNumérique43500.40
AVG(Salaire)Moyenne des valeursNumérique7250.07
MIN(Salaire)Valeur minimaleNumérique, Date, Texte6000.00
MAX(Salaire)Valeur maximaleNumérique, Date, Texte9000.00
 Exercice pratique

Utilisation des fonctions d'agrégation

 Niveau : Débutant

En utilisant la table Employes, écrivez les requêtes SQL pour :

  1. Compter le nombre d'employés qui sont ingénieurs.
  2. Trouver l'âge minimum et maximum des employés.
  3. Calculer la somme totale des salaires des employés du département 1.
  4. Compter le nombre de professions distinctes.
Points clés à retenir
  • Les fonctions d'agrégation résument plusieurs lignes en une seule valeur.
  • Les cinq fonctions standard sont : COUNT, SUM, AVG, MIN, MAX.
  • Elles ignorent par défaut les valeurs NULL.
  • COUNT(*) compte toutes les lignes, y compris celles avec NULL.
  • COUNT(colonne) compte seulement les lignes où la colonne n'est pas NULL.
  • On peut utiliser DISTINCT pour ignorer les doublons dans les calculs.
  • SUM et AVG ne fonctionnent que sur des colonnes numériques.
  • MIN et MAX fonctionnent sur les types numériques, textuels et dates.
  • Les fonctions d'agrégation sont souvent utilisées avec GROUP BY (vu dans le cours précédent).

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.