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.
SELECT colonne1, FONCTION_AGG(colonne2)
FROM table
GROUP BY colonne1;
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.
SELECT staff_id, COUNT(*) AS nb_paiements
FROM payment
GROUP BY staff_id;
Résultat : Affiche combien de paiements chaque employé a traités.
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.
Vous pouvez regrouper les données par plusieurs colonnes pour une analyse plus détaillée.
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.
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;
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;
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.