COUNT com CASE
Parte da seção Além do Básico do Journey de SQL da Coddy. Lição 12 de 27.
Você pode colocar uma expressão CASE dentro de uma função de agregação. O truque é que COUNT ignora NULL, portanto, um CASE sem ELSE conta apenas as linhas que correspondem à condição.
SELECT
COUNT(*) AS total,
COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM usersAgora active_count é o número de linhas 'active', embora não tenhamos filtrado a consulta inteira. Esse é o truque por trás de toda consulta de dashboard multimétrica que você escreverá.
Desafio
FácilTabelas e colunas disponíveis:
orders:id,customer_id,status
Para cada customer_id, retorne:
customer_idtotal: total de pedidos feitos por esse clienteshipped: contagem em questatus = 'shipped'cancelled: contagem em questatus = 'cancelled'
Retorne apenas os clientes que têm pelo menos um pedido cancelado. Ordene por customer_id.
Experimente você mesmo
SELECT customer_id,
COUNT(*) AS total,
-- enviados, cancelados usando COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- filtrar para clientes com pelo menos um cancelamento
ORDER BY customer_id
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Além do Básico
3Agregação Condicional
COUNT com CASESUM com CASETransformando Linhas em ColunasRecapitulação - Fontes de TráfegoPratique por conta própria: Playground de SQL