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.
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.
¿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.
productos:idINTEGERnombreTEXTcategoriaTEXTprecioREALstockINTEGERPrimer paso: explorar toda la tabla
Antes de escribir tu consulta, conviene mirar la tabla completa. Esta consulta trae todas las columnas (eso significa el asterisco) y todas las filas:
SELECT * FROM productos;
Cargando la tabla…
Mirándola te ubicás: qué columnas hay, cómo están escritos los textos (por ejemplo, 'Lácteos' con mayúscula y tilde) y entre qué valores andan los números. Con eso armás tu consulta sin adivinar. Su id es el número que aparece en ventas.producto_id.
Hacelo siempre como primer paso cuando trabajes con una tabla nueva. Si la tabla es enorme, sumale LIMIT 20 para ver solo una muestra, como viste en SQL Inicial.
- 1Mostrá
nombre,stocky un semáforo:'reponer'si el stock es menor a 10,'atento'si es menor a 20 y'ok'en el resto. - 2Mostrá
nombrey una etiqueta de precio:'barato'si cuesta menos de 1500,'medio'si cuesta menos de 3000 y'premium'en el resto. - 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.
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.
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