Menu
Coddy logo textTech

SUM con CASE

Parte de la sección Más allá de lo básico del Journey de SQL de Coddy. Lección 13 de 27.

La misma idea funciona con SUM: y es aún más flexible. CASE puede devolver 1 para las filas coincidentes y 0 para todo lo demás, o puede devolver cualquier valor numérico para ponderar las filas de forma diferente.

SELECT
    SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
    SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM users

SUM(CASE … THEN 1 ELSE 0 END) y COUNT(CASE … THEN 1 END) dan el mismo resultado al contar; elige el estilo que prefiera tu equipo.

challenge icon

Desafío

Fácil

Tablas y columnas disponibles:

  • transactions: id, category, type, amount

type es 'sale' o 'refund'. Para cada category, devuelve:

  • category
  • net_revenue: suma de los importes de las ventas menos la suma de los importes de los reembolsos

Calcula net_revenue en una única expresión SUM(CASE …), donde los reembolsos contribuyen con su importe como un número negativo. Ordena por net_revenue en orden descendente.

Pruébalo tú mismo

SELECT category,
       -- un SUM(CASE ...) donde los reembolsos cuentan negativo
FROM transactions
GROUP BY category
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Más allá de lo básico

Practica por tu cuenta: Playground de SQL