Code SQL copié dans le presse-papiers
Apprenez à utiliser la clause GROUP BY en SQL pour regrouper et synthétiser vos données efficacement. Cette leçon explique les bases de GROUP BY, le regroupement multi-colonnes et l'agrégation pratique avec des exemples réels sur la base Sakila. Maîtriser GROUP BY vous aidera à créer des rapports puissants et à réaliser des analyses avancées en SQL. Idéal pour les débutants et ceux qui souhaitent améliorer leurs compétences en reporting SQL.
RU EN PT

Leçon 4.2 : Regrouper les données avec GROUP BY en SQL

Regrouper les données est un outil clé pour l'analyse et la synthèse en SQL. La clause GROUP BY permet de combiner les lignes ayant les mêmes valeurs dans des colonnes spécifiées et d'appliquer des fonctions d'agrégation à chaque groupe. Dans cette leçon, vous apprendrez à utiliser GROUP BY pour le reporting et l'analyse avec des exemples issus de la base Sakila.

Bases de l'utilisation de GROUP BY

Syntaxe

SELECT colonne1, FONCTION_AGG(colonne2)
FROM table
GROUP BY colonne1;

Exemple : Total des paiements par client

SELECT customer_id, SUM(amount) AS total_paye
FROM payment
GROUP BY customer_id;

Résultat : Retourne le montant total des paiements pour chaque client.

Exemple : Nombre de paiements par employé

SELECT staff_id, COUNT(*) AS nb_paiements
FROM payment
GROUP BY staff_id;

Résultat : Affiche combien de paiements chaque employé a traités.

Exemple : Paiement moyen par date

SELECT DATE(payment_date) AS date_paiement, AVG(amount) AS paiement_moyen
FROM payment
GROUP BY date_paiement;

Résultat : Retourne le montant moyen des paiements pour chaque date.

Utiliser GROUP BY avec plusieurs colonnes

Vous pouvez regrouper les données par plusieurs colonnes pour une analyse plus détaillée.

Exemple : Total des paiements par employé et client

SELECT staff_id, customer_id, SUM(amount) AS total_paye
FROM payment
GROUP BY staff_id, customer_id;

Résultat : Affiche combien chaque employé a reçu de chaque client.

Utilisation pratique

  1. Analyse des ventes par catégorie de film :
    SELECT c.name AS categorie, SUM(p.amount) AS ventes_totales
    FROM payment p
    JOIN rental r ON p.rental_id = r.rental_id
    JOIN inventory i ON r.inventory_id = i.inventory_id
    JOIN film f ON i.film_id = f.film_id
    JOIN film_category fc ON f.film_id = fc.film_id
    JOIN category c ON fc.category_id = c.category_id
    GROUP BY c.name;
    
  2. Nombre de clients par pays :
    SELECT country, COUNT(*) AS nb_clients
    FROM customer cu
    JOIN address a ON cu.address_id = a.address_id
    JOIN city ci ON a.city_id = ci.city_id
    JOIN country co ON ci.country_id = co.country_id
    GROUP BY country;
    

Points clés de cette leçon

La clause GROUP BY permet de regrouper les données et d'appliquer des fonctions d'agrégation à chaque groupe. C'est un outil puissant pour le reporting et l'analyse en SQL. Pratiquez GROUP BY avec des exemples de la base Sakila pour obtenir rapidement des données synthétiques et construire des requêtes analytiques.