Passer au contenu

Comment Agréger les Données en SQL

L’agrégation des données en SQL permet de regrouper et de résumer des informations provenant de plusieurs enregistrements. Cela est particulièrement utile pour produire des rapports, des statistiques, ou des analyses sur des ensembles de données plus larges.

Qu’est-ce que l’agrégation de données ?

L’agrégation des données consiste à appliquer des fonctions d’agrégation à des ensembles de lignes pour produire un seul résultat par groupe. Par exemple, au lieu de lister toutes les ventes individuelles, vous pouvez utiliser l’agrégation pour calculer la somme totale des ventes, le nombre de ventes réalisées, ou la moyenne des montants de vente.

Fonctions d’agrégation principales

Les fonctions d’agrégation les plus couramment utilisées en SQL incluent :

  • SUM() : Calcule la somme des valeurs d’une colonne numérique.
  • AVG() : Calcule la moyenne des valeurs d’une colonne numérique.
  • COUNT() : Compte le nombre d’enregistrements (lignes) dans un ensemble de résultats.
  • MIN() : Trouve la valeur minimale dans une colonne.
  • MAX() : Trouve la valeur maximale dans une colonne.

Exemple d’utilisation des fonctions d’agrégation

Supposons que vous ayez une table appelée ventes qui contient les colonnes produit, quantite, et montant. Voici comment vous pourriez utiliser certaines de ces fonctions d’agrégation :

  • Calculer la somme des montants des ventes :
SELECT SUM(montant) AS total_ventes
FROM ventes;
  • Calculer la moyenne des montants des ventes :
SELECT AVG(montant) AS montant_moyen
FROM ventes;
  • Compter le nombre total de ventes :
SELECT COUNT(*) AS nombre_ventes
FROM ventes;
  • Trouver le montant minimum et maximum des ventes :
SELECT MIN(montant) AS montant_minimum, MAX(montant) AS montant_maximum
FROM ventes;

Grouper les données avec GROUP BY

Pour appliquer des fonctions d’agrégation à des sous-ensembles de données, vous utilisez la clause GROUP BY. Cette clause regroupe les lignes ayant des valeurs identiques dans les colonnes spécifiées, puis applique les fonctions d’agrégation sur chaque groupe.

Exemple d’utilisation de GROUP BY

Imaginons que vous vouliez savoir combien chaque produit a été vendu et quel est le montant total des ventes pour chaque produit. Vous pourriez utiliser la clause GROUP BY comme suit :

SELECT produit, SUM(quantite) AS total_quantite, SUM(montant) AS total_ventes
FROM ventes
GROUP BY produit;

Dans cet exemple :

  • GROUP BY produit : Cela groupe les enregistrements par le nom du produit.
  • SUM(quantite) et SUM(montant) : Ces fonctions d’agrégation calculent respectivement la quantité totale vendue et le montant total des ventes pour chaque produit.

Filtrer les groupes avec HAVING

Parfois, vous souhaitez filtrer les résultats après avoir appliqué les agrégations. Pour cela, vous utilisez la clause HAVING. Contrairement à WHERE, qui filtre les lignes avant l’agrégation, HAVING filtre les groupes après l’agrégation.

Exemple d’utilisation de HAVING

Supposons que vous vouliez afficher uniquement les produits dont le montant total des ventes dépasse 1000 :

SELECT produit, SUM(montant) AS total_ventes
FROM ventes
GROUP BY produit
HAVING SUM(montant) > 1000;

Dans cet exemple :

  • HAVING SUM(montant) > 1000 : Cela filtre les groupes pour n’afficher que ceux dont le montant total des ventes est supérieur à 1000.

Agrégation sur plusieurs colonnes

Vous pouvez également grouper des données sur plusieurs colonnes pour des analyses plus détaillées. Par exemple, si vous souhaitez regrouper les ventes par produit et par mois :

SELECT produit, MONTH(date_vente) AS mois, SUM(montant) AS total_ventes
FROM ventes
GROUP BY produit, MONTH(date_vente);

Dans cet exemple :

  • GROUP BY produit, MONTH(date_vente) : Cela regroupe les ventes par produit et par mois de vente.