Principe
SELECT choisit les colonnes, FROM la table, WHERE filtre les lignes, GROUP BY regroupe avec des agrégats (SUM, COUNT, AVG), HAVING filtre les groupes, ORDER BY trie. C'est le langage commun de toutes les bases (SQL Server, Oracle, PostgreSQL, HANA).
Comprendre pas à pas
1. La situation
Un analyste supply chain demande chaque semaine au service informatique la liste des commandes en retard. Il attend 3 jours à chaque fois. Il a un accès en lecture à la base du WMS. Question : comment interroger lui-même une base avec SQL ?
2. Une requête et ses clauses
| Clause | Rôle | Exemple |
|---|---|---|
| SELECT | colonnes à afficher | SELECT commande, client, date_prevue, statut |
| FROM | table | FROM commandes |
| WHERE | filtre sur les lignes | WHERE date_prevue < CURRENT_DATE AND statut <> 'EXPEDIEE' |
| GROUP BY | regroupement | GROUP BY client |
| HAVING | filtre sur les groupes | HAVING COUNT(*) > 5 |
| ORDER BY | tri | ORDER BY date_prevue |
3. L'idée
SQL est le langage d'interrogation des bases de données relationnelles (ERP, WMS, TMS). Une requête SELECT choisit des colonnes, filtre des lignes, regroupe et trie. Quelques clauses suffisent pour l'essentiel des besoins d'analyse. On travaille en lecture seule, si possible sur une copie de la base.
SELECT client, COUNT(*) AS nb_retards FROM commandes WHERE date_prevue < CURRENT_DATE AND statut <> 'EXPEDIEE' GROUP BY client ORDER BY nb_retards DESC
L'ordre d'exécution logique : FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY.
4. Les requêtes construites
Commandes en retard. Filtre sur la date prévue et le statut.
Retards par client. Regroupement et comptage, tri décroissant.
Clients à plus de 5 retards. HAVING sur le comptage.
Résultat. La liste est disponible chaque lundi en 2 minutes, au lieu de 3 jours d'attente.
5. À vous de jouer : vos bases SQL
6. Ce qu'il faut retenir
- SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.
- WHERE filtre les lignes, HAVING filtre les groupes.
- Travailler en lecture seule.
Mise en œuvre
- Acteurs
- Analystes
- Durée
- Apprentissage de quelques jours
- Livrables
- Usage maîtrisé, gains mesurés
- Identifier tables et colonnesAvec la documentation ou l'informatique.
- Écrire pas à pasSELECT, FROM, WHERE, GROUP BY.
- Vérifier sur un cas connuTotal comparé à un rapport existant.
- Respecter la productionRequêtes lourdes hors heures de pointe.
Exemple d'application
SELECT article, SUM(quantite) FROM mouvements WHERE type = 'SORTIE' AND date >= '2026-01-01' GROUP BY article ORDER BY 2 DESC : consommations de l'année triées.
Points de vigilance
- Requêtes lourdes sur la base de production en pleine journée