Avancé · 25 min
CASE & logique conditionnelle : traduire les regles métier
Les regles métier (seuil de reussite, categorie de salaire, niveau de risque) se traduisent directement en SQL avec CASE WHEN.
Contexte
Les regles métier (seuil de reussite, categorie de salaire, niveau de risque) se traduisent directement en SQL avec CASE WHEN. C'est la base de la transformation des données brutes en indicateurs métier.
Explication
CASE WHEN permet de creer une colonne conditionnelle.
Syntaxe : SELECT ..., CASE WHEN condition1 THEN valeur1 WHEN condition2 THEN valeur2 ELSE valeur_par_defaut END AS alias FROM ...;
Points cles :
- CASE s'ecrit dans SELECT (colonne calculee), WHERE (filtre conditionnel), ORDER BY
- Il peut etre imbrique
- Il peut etre utilise dans un agrégat (SUM(CASE WHEN ... THEN 1 ELSE 0 END))
- ELSE est optionnel (NULL si aucune condition n'est verifiee)
Exemple guidé
Objectif : categoriser les notes en appréciation.
1. CASE WHEN note >= 16 THEN 'Excellent' 2. WHEN note >= 12 THEN 'Bien' 3. WHEN note >= 10 THEN 'Moyen' 4. ELSE 'Insuffisant'
SELECT id, note,
CASE WHEN note >= 16 THEN 'Excellent'
WHEN note >= 12 THEN 'Bien'
WHEN note >= 10 THEN 'Moyen'
ELSE 'Insuffisant'
END AS appreciation
FROM notes
ORDER BY note DESC;
| id | note | appreciation |
|---|---|---|
| 12 | 18 | Excellent |
| 9 | 17.5 | Excellent |
| 5 | 16.5 | Excellent |
| 13 | 16 | Excellent |
| 7 | 15.5 | Bien |
| 6 | 15 | Bien |
| 25 | 15 | Bien |
| 14 | 14.5 | Bien |
| 3 | 14 | Bien |
| 22 | 14 | Bien |
| 20 | 13.5 | Bien |
| 23 | 13.5 | Bien |
| 8 | 13 | Bien |
| 26 | 12.5 | Bien |
| 1 | 12 | Bien |
| 17 | 12 | Bien |
| 18 | 12 | Bien |
| 15 | 11.5 | Moyen |
| 24 | 11 | Moyen |
| 11 | 10.5 | Moyen |
| 4 | 10 | Moyen |
| 21 | 10 | Moyen |
| 10 | 9.5 | Insuffisant |
| 19 | 9 | Insuffisant |
| 2 | 8.5 | Insuffisant |
| 16 | 8 | Insuffisant |
| 27 | 7.5 | Insuffisant |
À retenir
CASE WHEN permet de creer des categories ou des indicateurs métier. Il peut etre utilise dans SELECT, WHERE, ORDER BY, HAVING. Imbricable et utilisable dans les agrégats (COUNT CASE WHEN...). ELSE optionnel (NULL par defaut).