Crear categorías con CASE
Objetivos
Vas a derivar una etiqueta de cada importe y resumir los pagos por esa etiqueta.
Concepto
CASE prueba condiciones de arriba hacia abajo y devuelve el resultado de la primera condición verdadera. ELSE cubre lo que queda.
En este ejemplo las bandas de importe son solo una clasificación para practicar SQL. No son categorías contables ni reglas de negocio oficiales del dataset Sakila.
Ejemplo
SELECT
CASE
WHEN amount < 5.00 THEN 'menor a 5'
WHEN amount < 10.00 THEN 'de 5 a menos de 10'
ELSE '10 o más'
END AS amount_band,
COUNT(*) AS payment_count,
ROUND(SUM(amount), 2) AS total_amount
FROM payment
GROUP BY amount_band
ORDER BY MIN(amount);La segunda condición solo se evalúa cuando el importe no fue menor de cinco. En MySQL puedes agrupar por el alias definido en el SELECT. MIN(amount) ordena las bandas por su importe mínimo, no alfabéticamente.
Práctica guiada
- Cambia el primer umbral a
4.00. - Añade
AVG(amount)redondeado a dos decimales. - Explica por qué las bandas sirven para explorar, pero no definen por sí solas un criterio de negocio.
Reto
Clasifica cada pago como pequeño cuando sea menor que 3.00 y resto en caso contrario. Cuenta los pagos en cada grupo y ordena los grupos de menor a mayor importe mínimo.
Quiz
¿Qué resultado devuelve CASE si ninguna condición WHEN se cumple y hay un ELSE?
- A. El valor de
ELSE. - B. La primera columna de la tabla.
- C. Siempre
NULL.
Respuesta: A. ELSE define el resultado para los casos restantes.
Comprobación
Ya puedes crear grupos con una regla visible. En la siguiente lección presentarás los valores ausentes sin modificar los datos originales; más adelante organizarás consultas en pasos con nombre.