SQL Intermedio · Lección 4 de 6

CASE: categorías con tus reglas

Los datos no siempre traen la etiqueta que necesitás. Con CASE la creás vos: "reponer", "premium" o "cliente frecuente", según las reglas de tu negocio.

5 minutos
reponeratentook

Si pasa esto, poné aquello

En una planilla usarías la función SI (o IF). En SQL se usa CASE: revisa una serie de reglas y, para cada fila, devuelve la etiqueta de la primera regla que se cumple. Si ninguna se cumple, usa la del ELSE.

SELECT  nombre,
        precio,
        CASE
          WHEN precio < 1500 THEN 'barato'
          WHEN precio < 3000 THEN 'medio'
          ELSE 'premium'
        END AS rango
FROM productos;

El resultado es una columna nueva, rango, que no existe en la tabla: la calcula la consulta en el momento, sin modificar nada. Como siempre, la base queda igual.

Cómo decide¿precio < 1500?→¿precio < 3000?→si no, ELSE

¿Por qué importa el orden?

Porque CASE se queda con la primera regla que se cumple y no sigue mirando. Si pusieras WHEN precio < 3000 primero, un producto de $950 diría "medio", porque 950 también es menor a 3000, y nunca llegaría a la regla de "barato". Regla práctica: de lo más chico a lo más grande, o de lo más específico a lo más general.

Y como CASE crea una columna, la podés usar para agrupar: GROUP BY estado te dice cuántos productos hay en cada estado. Así se arman tableros: etiquetás con reglas y después contás.

Si no ponés ELSE y ninguna regla se cumple, la columna queda vacía (NULL). Por eso conviene cerrar siempre con un ELSE.

Actividad 1

Ordená las reglas

Armá un semáforo de stock: reponer (menos de 10), atento (menos de 20) y ok (el resto). Tocá las piezas en el orden correcto.

Actividad 2

Etiquetas para el almacén

Tres misiones con CASE. Los textos de las etiquetas tienen que ser exactamente los que pide cada misión.

Columnas de productos:idINTEGERnombreTEXTcategoriaTEXTprecioREALstockINTEGER
  1. 1Mostrá nombre, stock y un semáforo: 'reponer' si el stock es menor a 10, 'atento' si es menor a 20 y 'ok' en el resto.
  2. 2Mostrá nombre y una etiqueta de precio: 'barato' si cuesta menos de 1500, 'medio' si cuesta menos de 3000 y 'premium' en el resto.
  3. 3Contá cuántos productos hay en cada estado del semáforo de stock (la columna del estado y la cantidad).

Tu misión, las tablas, los mensajes y la ayuda están en el panel de la izquierda.

almacen.dbproductosclientessucursalesventasstock_diario
o Ctrl + Enter

Tocá Ejecutar para ver el resultado.

Chequeo rápido

Un CASE no tiene ELSE y, para un producto, ninguna regla se cumple. ¿Qué aparece en la columna?

Que la IA te traduzca una regla de negocio

Las reglas suelen venir en castellano ("si compró más de 10 veces es frecuente"). Pedile a Gemini que las convierta en CASE:

Tengo una tabla [productos] con la columna [stock]. Quiero una columna nueva que diga [reponer si el stock es menor a 10, atento si es menor a 20, y ok en el resto]. Escribime el CASE y explicame por qué el orden de las reglas importa.

Revisá el orden de los WHEN que te devuelve: es el error más común.

Para llevarte: CASE WHEN … THEN … ELSE … END crea una columna nueva con tus reglas. Se queda con la primera regla que se cumple, así que el orden importa. Con GROUP BY contás cuántos hay en cada etiqueta.

Ya creás tus propias categorías

¿Listo para la próxima lección?