Menu
Coddy logo textTech

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 um agregado. O truque é que o COUNT ignora NULL, então 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 users

Agora active_count é o número de linhas 'active', embora não tenhamos filtrado a consulta inteira. Este é o truque por trás de cada consulta de dashboard multi-métrica que você escreverá.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>orders</strong>: <strong>id</strong>, <strong>customer_id</strong>, <strong>status</strong>

Para cada customer_id, retorne:

  • customer_id
  • total: total de pedidos que o cliente fez
  • shipped: contagem onde status = 'shipped'
  • cancelled: contagem onde status = 'cancelled'

Retorne apenas clientes que tenham pelo menos um pedido cancelado. Ordene por customer_id.

Experimente você mesmo

SELECT customer_id,
       COUNT(*) AS total,
       -- shipped, cancelled usando COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- filtrar para clientes com pelo menos um cancelamento
ORDER BY customer_id
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Playground de SQL