Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

SQL para ciencia de datos, Unidad 6 — Funciones avanzadas para análisis, 6.3 — Funciones condicionales ·

CASE WHEN

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 WHEN cubran 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 WHEN y sus condiciones.

Cierre: Siguientes pasos

  • Practica regularmente: La mejor manera de dominar CASE WHEN es 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 WHEN en 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.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).