Reporting métier — les requêtes du patron
Théorie du reporting (KPIs, dimensions, métriques, questions business). 12 requêtes métier complètes pour SunuShop : CA total et mensuel, CA par catégorie, top produits, top clients, panier moyen, taux d'annulation, stock mort, alertes.
Concepts Théoriques
En entreprise, on ne vous demandera pas "écris un INNER JOIN avec GROUP BY HAVING". On vous demandera "combien on a vendu ce mois ?", "quels produits marchent le mieux ?", "quel est notre panier moyen ?", "dans quelles villes on vend le plus ?". Le reporting transforme des données brutes en décisions commerciales.
La méthode pour construire une requête de reporting
Face à une question business, procédez toujours en 3 étapes :
- Identifier la métrique — QU'est-ce qu'on mesure ? Un montant (SUM), un nombre (COUNT), une moyenne (AVG), un classement (ORDER BY + LIMIT) ?
- Identifier la dimension — PAR quoi on découpe ? Par mois (GROUP BY YEAR, MONTH), par catégorie (GROUP BY category_id), par ville (GROUP BY city), par statut (GROUP BY status) ?
- Identifier les filtres — QU'est-ce qu'on exclut ? Les commandes annulées (WHERE status != 'cancelled'), les produits inactifs (WHERE is_active = TRUE), une période (WHERE created_at >= '2026-01-01') ?
Avec ces 3 éléments, la requête s'écrit presque toute seule.
Penser en dimensions et métriques
Chaque question de reporting a deux composantes :
- Les métriques — ce qu'on mesure : chiffre d'affaires, nombre de commandes, panier moyen, taux d'annulation
- Les dimensions — comment on découpe : par mois, par catégorie, par ville, par méthode de paiement
"CA par mois" → métrique = SUM(montant), dimension = MONTH(date). "Top produits" → métrique = SUM(quantité), dimension = product.name. Penser en métriques/dimensions aide à structurer TOUTE requête de reporting.
Le tableau de bord du patron
Un bon tableau de bord e-commerce répond à 5 types de questions :
- Performance — combien on gagne ? (CA, marge, panier moyen)
- Tendance — ça monte ou ça descend ? (CA mensuel, comparaison N vs N-1)
- Classement — qu'est-ce qui marche ? (top produits, top catégories, top clients)
- Alerte — qu'est-ce qui va mal ? (ruptures de stock, commandes en attente, stock mort)
- Segmentation — qui sont nos clients ? (par ville, par fréquence, par montant dépensé)
Exporter en CSV
Les résultats de reporting doivent souvent être partagés en Excel ou Google Sheets. MySQL peut exporter directement :
-- Export CSV depuis MySQL (nécessite les droits FILE)
SELECT * FROM v_monthly_revenue
INTO OUTFILE '/tmp/ca_mensuel.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';En pratique, phpMyAdmin a un bouton "Exporter" qui fait la même chose en un clic. En Laravel, vous utiliserez un package comme maatwebsite/excel.