CASE WHEN
Fait partie de la section Au-delà des bases du Journey SQL de Coddy — leçon 1 sur 27.
Une expression CASE est un if/else if/else pour SQL. Elle se place à l'intérieur de SELECT (ou ORDER BY, ou WHERE) et produit une valeur par ligne.
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
WHEN score >= 60 THEN 'C'
ELSE 'F'
END AS grade
FROM studentsChaque WHEN est vérifié de haut en bas ; la première correspondance l'emporte. Le ELSE est facultatif. Sans lui, les lignes sans correspondance reçoivent NULL.
Terminez toujours par END et donnez un nom à la colonne avec AS.
Défi
FacileTables et colonnes disponibles :
<strong>employees</strong>:<strong>id</strong>,<strong>name</strong>,<strong>department</strong>,<strong>salary</strong>
Pour chaque employé, retournez son name, son department, et une colonne tier construite ainsi :
'partner'quandsalary >= 150000(quel que soit le département)'senior'quanddepartment = 'eng'etsalary >= 100000'mid'quandsalary >= 60000'entry'sinon
Ordonnez par salary décroissant. Notez que l'ordre des branches WHEN est important : la première correspondance l'emporte.
Aide-mémoire
CASE agit comme un if/else à l'intérieur de SELECT, produisant une valeur par ligne :
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
ELSE 'F'
END AS grade
FROM students- Les conditions sont vérifiées de haut en bas ; la première correspondance l'emporte
ELSEest facultatif — sans lui, les lignes sans correspondance retournentNULL- Terminez toujours par
END; utilisezASpour nommer la colonne
Essayez vous-même
SELECT name, department,
-- niveau avec plusieurs branches WHEN qui mélangent salary et department
FROM employees
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Au-delà des bases
1Logique conditionnelle
CASE WHENCASE dans ORDER BYCOALESCE pour les NULLsNULLIF et IIFRécapitulatif - Présences