CASE WHEN: Un poderoso mecanismo para análisis condicional en SQL
Introducción
En la ciencia de datos, la capacidad de realizar analizos condicionales es fundamental. El CASE WHEN es una herramienta esencial que nos permite aplicar diferentes operaciones o devolver distintos valores basados en condiciones específicas. Es especialmente útil cuando necesitamos transformar, filtrar o categorizar nuestros datos según ciertos criterios.
Explicación principal con ejemplos
El CASE WHEN funciona similar a un if-else statement en lenguajes de programación como Python o R. Su estructura básica es la siguiente:
CASE
WHEN condición1 THEN valor_si_verdadero1
[WHEN condición2 THEN valor_si_verdadero2]
...
[ELSE valor_si_falso]
END
Ejemplo 1: Limpieza de datos
Supongamos que trabajamos con una tabla pedidos donde cada fila representa un pedido y la columna estado puede tener los valores 'En progreso', 'Entregado', o 'Cancelado'. Queremos reemplazar las cadenas largas por su valor corto, lo cual nos permitirá ahorrar espacio en nuestros datasets.
SELECT
id_pedido,
estado,
CASE
WHEN estado = 'En progreso' THEN 'E'
WHEN estado = 'Entregado' THEN 'D'
ELSE 'C'
END AS estado_corto
FROM pedidos;
Ejemplo 2: Feature engineering
Un caso más avanzado sería el cálculo de edades en años base en la fecha de nacimiento. Podemos crear una columna edad usando un CASE WHEN.
SELECT
id_cliente,
fecha_nacimiento,
CASE
WHEN strftime('%m', fecha_nacimiento) > strftime('%m', date('now')) THEN strftime('%Y', date('now')) - strftime('%Y', fecha_nacimiento) - 1
ELSE strftime('%Y', date('now')) - strftime('%Y', fecha_nacimiento)
END AS edad
FROM clientes;
Ejemplo 3: Agrupación y cálculo de métricas
Podemos usar CASE WHEN en combinación con funciones de agregación para crear nuevas columnas que luego podemos agrupar. Por ejemplo, en una tabla de ventas, podríamos clasificar los productos según su popularidad.
SELECT
producto,
SUM(cantidad) AS total_cantidad,
CASE
WHEN SUM(cantidad) > 100 THEN 'Popular'
WHEN SUM(cantidad) BETWEEN 50 AND 100 THEN 'Medio'
ELSE 'Raro'
END AS popularidad
FROM ventas
GROUP BY producto;
Errores típicos / trampas
Trampa 1: Omitir el ELSE en CASE WHEN
Un error común es omitir el ELSE, lo cual puede causar que algunas filas no tengan un valor asignado. Esto se debe a que si ninguna condición se cumple, no hay un valor por defecto.
SELECT
id,
CASE
WHEN valor > 10 THEN 'alto'
WHEN valor < 5 THEN 'bajo'
END AS categoria
FROM tabla;
Trampa 2: Falta de comillas en condiciones
Otra trampa es no usar comillas para valores literales, lo cual puede generar errores de sintaxis.
SELECT
id,
CASE
WHEN valor = alto THEN 'ok'
ELSE 'no ok'
END AS estado
FROM tabla;
Trampa 3: Uso incorrecto del CASE dentro de una función de agregación
A veces, se intenta usar CASE WHEN directamente en una función de agregación sin el uso correcto. Esto puede causar errores o comportamientos inesperados.
SELECT
SUM(CASE valor > 10 THEN valor ELSE 0 END) AS suma_acumulativa
FROM tabla;
Checklist accionable
- Revisa todas las condiciones: Asegúrate de que tus
WHENcubran todos los casos posibles. - Incluye siempre un
ELSE: Para evitar errores, asegura que cada fila tenga un valor asignado. - Usa comillas para valores literales: Si tu condición incluye cadenas o números específicos, asegúrate de usar las comillas correspondientes.
- Prueba en diferentes conjuntos de datos: Prueba tus consultas con distintos conjuntos de datos para asegurarte de su consistencia.
- Documenta tus casos: Escribe comentarios en tu consulta para explicar el propósito de cada
CASE WHENy sus condiciones.
Cierre: Siguientes pasos
- Practica regularmente: La mejor manera de dominar
CASE WHENes practicando con diferentes conjuntos de datos. - Explora más funciones condicionales: Aprende sobre otras funciones similares como
COALESCE, que pueden ser útiles en contextos específicos. - Integra en tus pipelines: Empieza a usar
CASE WHENen tus procesos de análisis y preparación de datos para mejorar la claridad y eficiencia.
SQL no solo es una herramienta esencial para el manejo de bases de datos, sino que también se convierte en un aliado poderoso en el campo de la ciencia de datos. El CASE WHEN es uno de esos herramientas clave que nos permiten realizar análisis condicionales complejos y eficientes.