Al terminar esta lección podrás
- Crear categorías condicionales.
- Ordenar condiciones correctamente.
- Utilizar ELSE y alias.
Antes de empezar: Condiciones y alias. Explica en una frase qué recuerdas antes de continuar.
La idea, sin código
CASE evalúa condiciones en orden. La primera condición verdadera determina el valor. ELSE cubre los casos restantes y END cierra la expresión.
Pregunta guía: ¿qué representa cada fila antes y después de aplicar este concepto?
Sintaxis mínima
CASE
WHEN condición THEN valor
ELSE valor
END AS aliasPrimer ejemplo guiado
| id | nombre | categoria | precio | stock |
|---|---|---|---|---|
| 1 | Teclado | Accesorios | 35 | 12 |
| 2 | Monitor | Pantallas | 189 | 5 |
| 3 | Ratón | Accesorios | 22 | 0 |
| 4 | Portátil | Equipos | 899 | 3 |
| 5 | Webcam | Accesorios | 59 | 8 |
Analiza la consulta antes de comprobar el resultado:
SELECT nombre, precio,
CASE
WHEN precio >= 500 THEN 'alto'
WHEN precio >= 100 THEN 'medio'
ELSE 'bajo'
END AS tramo
FROM productos;| nombre | precio | tramo |
|---|---|---|
| Teclado | 35 | bajo |
| Monitor | 189 | medio |
| Ratón | 22 | bajo |
| Portátil | 899 | alto |
| Webcam | 59 | bajo |
Qué ocurre paso a paso
- Las condiciones se revisan de arriba abajo.
- El Portátil entra en alto y no evalúa las siguientes.
- AS tramo nombra la columna calculada.
Error frecuente
Consulta o razonamiento problemático
CASE precio >= 100 THEN 'medio' ENDFalta WHEN antes de la condición.
Práctica guiada
Resuelve una sola dificultad cada vez
Clasifica productos como 'agotado' cuando stock = 0 y 'disponible' en caso contrario.
Solución razonada
SELECT nombre, CASE WHEN stock = 0 THEN 'agotado' ELSE 'disponible' END AS disponibilidad FROM productos;La expresión produce una etiqueta por fila sin modificar el stock.
Comprueba: identifica qué parte recupera, filtra, transforma, relaciona o modifica los datos.
Ahora sin guía
Transfiere lo aprendido
Clasifica salarios en inicial, medio y alto utilizando dos límites.
Comparar con una solución posible
SELECT nombre, salario,
CASE WHEN salario >= 38000 THEN 'alto'
WHEN salario >= 30000 THEN 'medio'
ELSE 'inicial' END AS tramo
FROM empleados;Puede existir otra solución válida. Comprueba que produce el resultado pedido y que puedes explicar cada cláusula.
Resumen para llevarte
- CASE crea valores por fila.
- El orden de WHEN importa.
- ELSE evita resultados NULL no intencionados.
Siguiente paso: Continúa con Funciones de texto y fechas.