CASE WHEN
Parte de la sección Más allá de lo básico del Journey de SQL de Coddy — lección 1 de 27.
Una expresión CASE es un if/else if/else para SQL. Vive dentro de SELECT (o ORDER BY, o WHERE) y produce un valor por fila.
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
WHEN score >= 60 THEN 'C'
ELSE 'F'
END AS grade
FROM studentsCada WHEN se comprueba de arriba hacia abajo; la primera coincidencia gana. El ELSE es opcional. Sin él, las filas que no coinciden obtienen NULL.
Termina siempre con END y asigna un nombre a la columna con AS.
Desafío
FácilTablas y columnas disponibles:
<strong>employees</strong>:<strong>id</strong>,<strong>name</strong>,<strong>department</strong>,<strong>salary</strong>
Para cada empleado, devuelve su name, department y una columna tier construida de la siguiente manera:
'partner'cuandosalary >= 150000(cualquier departamento)'senior'cuandodepartment = 'eng'ysalary >= 100000'mid'cuandosalary >= 60000'entry'de lo contrario
Ordena por salary de forma descendente. Ten en cuenta que el orden de las ramas WHEN importa: la primera coincidencia es la que prevalece.
Hoja de referencia
CASE actúa como un if/else dentro de SELECT, produciendo un valor por fila:
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
ELSE 'F'
END AS grade
FROM students- Las condiciones se comprueban de arriba hacia abajo; la primera coincidencia gana
ELSEes opcional; sin él, las filas que no coincidan devuelvenNULL- Cierra siempre con
END; usaASpara nombrar la columna
Pruébalo tú mismo
SELECT name, department,
-- nivel con múltiples ramas WHEN que mezclan salary y department
FROM employees
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.