Módulo 5 · Consultas avanzadas

Crear categorías con CASE

Genera valores condicionales dentro de una consulta.

⏱ 20 minNivel: IntermedioRequisito: Condiciones y alias

0 de 40 lecciones

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

Estructura
CASE
  WHEN condición THEN valor
  ELSE valor
END AS alias

Primer ejemplo guiado

Datos de ejemplo: tabla productos
idnombrecategoriapreciostock
1TecladoAccesorios3512
2MonitorPantallas1895
3RatónAccesorios220
4PortátilEquipos8993
5WebcamAccesorios598

Analiza la consulta antes de comprobar el resultado:

SQL
SELECT nombre, precio,
  CASE
    WHEN precio >= 500 THEN 'alto'
    WHEN precio >= 100 THEN 'medio'
    ELSE 'bajo'
  END AS tramo
FROM productos;
Resultado esperado
nombrepreciotramo
Teclado35bajo
Monitor189medio
Ratón22bajo
Portátil899alto
Webcam59bajo

Qué ocurre paso a paso

  1. Las condiciones se revisan de arriba abajo.
  2. El Portátil entra en alto y no evalúa las siguientes.
  3. AS tramo nombra la columna calculada.
Comprueba que lo entendiste

¿Qué ocurre cuando dos condiciones son verdaderas?

Error frecuente

Consulta o razonamiento problemático

Revisar
CASE precio >= 100 THEN 'medio' END

Falta WHEN antes de la condición.

Práctica guiada

Básica · apoyo graduado

Resuelve una sola dificultad cada vez

Clasifica productos como 'agotado' cuando stock = 0 y 'disponible' en caso contrario.

Ahora sin guía

Intermedia · práctica autónoma

Transfiere lo aprendido

Clasifica salarios en inicial, medio y alto utilizando dos límites.

Comparar con una solución posible
SQL
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.

Consulta rápida