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 usersAhora 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.
Desafío
FácilTablas y columnas disponibles:
orders:id,customer_id,status
Para cada customer_id, devuelve:
customer_idtotal: total de pedidos que realizó ese clienteshipped: cantidad en la questatus = 'shipped'cancelled: cantidad en la questatus = '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
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
2Funciones de cadenas
LENGTH, UPPER, LOWERSUBSTRINSTRREPLACE y TRIMConcatenar con ||Repaso - Facturas3Agregación condicional
COUNT con CASESUM con CASEConvertir filas en columnasRepaso: fuentes de tráficoPractica por tu cuenta: Playground de SQL