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 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 users

Agora 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á.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • orders: id, customer_id, status

Para cada customer_id, retorne:

  • customer_id
  • total: total de pedidos feitos por esse cliente
  • shipped: contagem em que status = 'shipped'
  • cancelled: contagem em que status = '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
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