Les fonctions d'agrégation en SQL
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.
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
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
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(*)
-- 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;+----------+ | COUNT(*) | +----------+ | 6 | +----------+
Exemple n°2
Compter les employés affectés à un département (Dep non NULL).
SELECT COUNT(Dep) FROM Employes;+------------+ | 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;+---------------------+ | COUNT(DISTINCT Age) | +---------------------+ | 3 | +---------------------+
Les âges distincts sont : 25, 29, 30.
2. Fonction SUM
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( [ALL|DISTINCT] nom_colonne )Exemple n°4
Calculer la somme des salaires de tous les employés.
SELECT SUM(Salaire) FROM Employes;+--------------+ | SUM(Salaire) | +--------------+ | 43500.40 | +--------------+
Exemple n°5
Calculer la somme des âges sans compter les valeurs dupliquées.
SELECT SUM(DISTINCT Age) FROM Employes;+-------------------+ | SUM(DISTINCT Age) | +-------------------+ | 84 | +-------------------+
Calcul : 25 + 29 + 30 = 84.
3. Fonction AVG
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( [ALL|DISTINCT] nom_colonne )Exemple n°6
Calculer le salaire moyen des employés.
SELECT AVG(Salaire) FROM Employes;+--------------+ | AVG(Salaire) | +--------------+ | 7250.066667 | +--------------+
4. Fonction MIN
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( [ALL|DISTINCT] nom_colonne )Exemple n°7
Trouver le salaire minimum dans la table Employes.
SELECT MIN(Salaire) FROM Employes;+--------------+ | MIN(Salaire) | +--------------+ | 6000.00 | +--------------+
5. Fonction MAX
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( [ALL|DISTINCT] nom_colonne )Exemple n°8
Trouver le salaire maximum dans la table Employes.
SELECT MAX(Salaire) FROM Employes;+--------------+ | MAX(Salaire) | +--------------+ | 9000.00 | +--------------+
Récapitulatif des fonctions d'agrégation
| Fonction | Description | Types supportés | Exemple sur la table |
|---|---|---|---|
| COUNT(*) | Compte toutes les lignes | Tous types | 6 (tous les employés) |
| COUNT(Dep) | Compte les valeurs non NULL | Tous types | 5 (employés avec département) |
| COUNT(DISTINCT Age) | Compte les valeurs distinctes | Tous types | 3 (âges différents) |
| SUM(Salaire) | Somme des valeurs | Numérique | 43500.40 |
| AVG(Salaire) | Moyenne des valeurs | Numérique | 7250.07 |
| MIN(Salaire) | Valeur minimale | Numérique, Date, Texte | 6000.00 |
| MAX(Salaire) | Valeur maximale | Numérique, Date, Texte | 9000.00 |
Utilisation des fonctions d'agrégation
En utilisant la table Employes, écrivez les requêtes SQL pour :
- Compter le nombre d'employés qui sont ingénieurs.
- Trouver l'âge minimum et maximum des employés.
- Calculer la somme totale des salaires des employés du département 1.
- Compter le nombre de professions distinctes.
- Nombre d'ingénieurs :
SELECT COUNT(*) FROM Employes WHERE Profession = 'Ingenieur';Résultat : 2 (Omar et Mostafa)
- Âge minimum et maximum :
SELECT MIN(Age), MAX(Age) FROM Employes;Résultat : MIN = 25, MAX = 30
- Somme des salaires du département 1 :
SELECT SUM(Salaire) FROM Employes WHERE Dep = 1;Résultat : 8000.40 + 9000.00 = 17000.40
- Nombre de professions distinctes :
SELECT COUNT(DISTINCT Profession) FROM Employes;Résultat : 3 (Assistant, Directeur, Ingenieur)
- 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.