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. El CASE puede devolver 1 para las filas que coincidan y 0 para todo lo demás, o puede devolver cualquier valor numérico para ponderar las filas de manera 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:

  • <strong>transactions</strong>: <strong>id</strong>, <strong>category</strong>, <strong>type</strong>, <strong>amount</strong>

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

  • category
  • net_revenue: suma de los importes de venta menos la suma de los importes de reembolso

Calcula net_revenue en una única expresión SUM(CASE …) donde los reembolsos aporten su importe como un número negativo. Ordena por net_revenue de forma descendente.

Pruébalo tú mismo

SELECT category,
       -- un SUM(CASE ...) donde los reembolsos cuentan en 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