🛢️Parcours Fioul GroupéMySQL · Chapitre 06
Accueil › MySQL › Chapitre 06
Chapitre 06 / 16

Exercices pratiques

Une série d'exercices corrigés sur le schéma fioul pour consolider les chapitres 2 à 5. Cherchez d'abord, puis dépliez la solution.

1 Rappel

Le schéma fioul

participant(id, nom, email, commune) · fournisseur(id, nom, ville) · campagne(id, libelle, commune, prix_litre, statut, fournisseur_id) · commande(id, participant_id, campagne_id, litres, statut). Le script complet est au sommaire.

2 Exercices

SELECT & WHERE

A. Les campagnes ouvertes dont le prix au litre est inférieur à 1,15 €, triées par prix croissant.

Solution A
SELECT libelle, prix_litre FROM campagne
WHERE statut = 'OUVERTE' AND prix_litre < 1.15
ORDER BY prix_litre;

B. Les participants dont l'email est renseigné et se termine par .fr.

Solution B
SELECT nom, email FROM participant
WHERE email IS NOT NULL AND email LIKE '%.fr';
3 Exercices

Jointures

C. Pour chaque commande confirmée : le nom du participant, le libellé de la campagne et le nombre de litres.

Solution C
SELECT p.nom, ca.libelle, c.litres
FROM commande c
JOIN participant p ON c.participant_id = p.id
JOIN campagne    ca ON c.campagne_id   = ca.id
WHERE c.statut = 'CONFIRMEE';

D. Les fournisseurs qui n'ont encore aucune campagne.

Solution D
SELECT f.nom
FROM fournisseur f
LEFT JOIN campagne ca ON ca.fournisseur_id = f.id
WHERE ca.id IS NULL;
4 Exercices

Agrégations

E. Le volume total commandé par commune, du plus élevé au plus faible.

Solution E
SELECT ca.commune, SUM(c.litres) AS volume
FROM commande c JOIN campagne ca ON c.campagne_id = ca.id
GROUP BY ca.commune
ORDER BY volume DESC;

F — défi. Les campagnes ayant atteint le palier de 5000 L, avec leur nombre de participants.

Solution F
SELECT ca.libelle, COUNT(c.id) AS nb, SUM(c.litres) AS volume
FROM campagne ca JOIN commande c ON c.campagne_id = ca.id
GROUP BY ca.id, ca.libelle
HAVING volume >= 5000
ORDER BY volume DESC;
🛢️ Sur le projet Fioul Groupé

Ces requêtes sont exactement celles dont l'appli a besoin : liste filtrée des campagnes, détail des inscriptions, et surtout le suivi du palier. Les refaire en SQL éclaire ce que fait l'agrégation MongoDB côté projet.

À retenir
← Chapitre 05