Menu
Coddy logo textTech

COUNT con CASE

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

Puedes colocar una expresión CASE dentro de una función de agregación. El truco es que COUNT ignora NULL, por lo que un CASE sin ELSE solo cuenta las filas que coinciden con la condición.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

Ahora active_count es el número de filas 'active', aunque no filtramos toda la consulta. Este es el truco detrás de cada consulta de panel multimétrica que escribirás.

challenge icon

Desafío

Fácil

Tablas y columnas disponibles:

  • orders: id, customer_id, status

Para cada customer_id, devuelve:

  • customer_id
  • total: total de pedidos que realizó ese cliente
  • shipped: cantidad en la que status = 'shipped'
  • cancelled: cantidad en la que status = 'cancelled'

Devuelve solo los clientes que tienen al menos un pedido cancelado. Ordena por customer_id.

Pruébalo tú mismo

SELECT customer_id,
       COUNT(*) AS total,
       -- enviados, cancelados usando COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- filtrar a clientes con al menos una cancelación
ORDER BY customer_id
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