Agrupando e rotulando dados
Transforme valores em categorias.
Agrupando e rotulando dados é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
O que é a categorização?
Categorização significa agrupar valores brutos em categorias nomeadas — transformando números, datas ou códigos em rótulos fáceis de entender.
Em vez de mostrar uma pontuação de 87, você mostra "Bom". Em vez de mostrar uma idade de 14 anos, você mostra "Adolescente". A expressão CASE é sua principal ferramenta para isso.
Tabela de exemplo: pedidos
Usaremos uma tabela de pedidos ao longo desta lição. Cada linha contém um valor de pedido e um código de status.
Execute a consulta abaixo para ver os dados com os quais trabalharemos.
SELECT id, customer, amount, status
FROM orders
ORDER BY id;Atribuindo rótulos com CASE WHEN
O padrão mais simples de categorização verifica uma condição e atribui um rótulo. O bloco CASE WHEN ... THEN ... ELSE ... END retorna uma nova cadeia de caracteres para cada linha.
Aqui, rotulamos cada pedido como 'Grande' ou 'Pequeno' com base no seu valor.
SELECT id,
amount,
CASE
WHEN amount >= 500 THEN 'Large'
ELSE 'Small'
END AS order_size
FROM orders;Várias categorias com cadeias de WHEN
Você pode adicionar quantas cláusulas WHEN forem necessárias. O SQL as verifica de cima para baixo e para na primeira correspondência.
Este exemplo divide os valores em três níveis: Pequeno, Médio e Grande.
SELECT id,
amount,
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Categorizando valores de texto
As categorias não servem apenas para números. Você pode comparar valores de texto exatos e substituí-los por rótulos mais claros.
Aqui, os códigos de status brutos 'P', 'S' e 'C' se tornam palavras fáceis de entender.
SELECT id,
status,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Usando a forma CASE simples
Quando você compara uma coluna com vários valores fixos, a forma CASE simples (CASE column WHEN value ...) é mais curta e fácil de ler do que repetir o nome da coluna em cada cláusula WHEN.
O resultado é idêntico ao da forma pesquisada.
SELECT id,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Categorização dentro de GROUP BY
Depois de obter um rótulo de categoria, você pode agrupá-lo para contar quantas linhas pertencem a cada categoria. Envolva a expressão CASE inteira em GROUP BY.
Esta consulta mostra quantos pedidos são Pequenos, Médios ou Grandes.
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier,
COUNT(*) AS total_orders
FROM orders
GROUP BY
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END;Categorização com um nome alternativo de subconsulta
Repetir um bloco CASE longo em GROUP BY torna o código prolixo. Uma abordagem mais limpa envolve a consulta principal em uma subconsulta (ou CTE), para que você possa referenciar diretamente o nome alternativo.
SELECT order_tier, COUNT(*) AS total_orders
FROM (
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders
) AS bucketed
GROUP BY order_tier;Categorias numéricas: faixas etárias
A divisão por idade é um caso clássico de uso da categorização. A consulta abaixo atribui cada cliente a uma faixa etária nomeada.
Observe que as condições vão do menor para o maior — o SQL para no primeiro WHEN que é verdadeiro, portanto a ordem importa.
SELECT name,
age,
CASE
WHEN age < 13 THEN 'Child'
WHEN age < 18 THEN 'Teen'
WHEN age < 65 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM customers;Atribuindo rótulos a NULL em uma categoria
Se um valor for NULL, nenhuma condição WHEN (exceto IS NULL) corresponderá a ele. Sem uma verificação explícita, os valores NULL passam para o ramo ELSE.
Adicione uma cláusula WHEN column IS NULL para dar aos valores NULL seu próprio rótulo.
SELECT id,
amount,
CASE
WHEN amount IS NULL THEN 'No Data'
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Categorização em ORDER BY
Você também pode usar uma expressão CASE diretamente dentro de ORDER BY para controlar a prioridade de ordenação sem adicionar uma nova coluna.
O exemplo abaixo sempre mostra os pedidos Pendentes primeiro, depois os Enviados e, por fim, os Cancelados.
SELECT id, customer, status
FROM orders
ORDER BY
CASE status
WHEN 'P' THEN 1
WHEN 'S' THEN 2
WHEN 'C' THEN 3
ELSE 4
END;Verificação rápida
Teste sua compreensão sobre categorização e atribuição de rótulos aos dados com CASE.
Recapitulação da lição
Muito bem! Veja o que você aprendeu sobre categorização e atribuição de rótulos aos dados:
- Categorização transforma valores brutos em categorias nomeadas usando
CASE WHEN. - Cadeias de cláusulas
WHENcriam várias categorias; o SQL para na primeira correspondência. - A forma CASE simples (
CASE col WHEN val) é ideal quando se compara uma coluna com valores fixos. - Você pode usar GROUP BY com uma expressão
CASEpara contar as linhas de cada categoria. - Sempre trate
NULLexplicitamente comWHEN col IS NULLpara que ele receba um rótulo significativo. CASEtambém funciona dentro deORDER BYpara definir uma prioridade de ordenação personalizada.
A categorização torna os relatórios muito mais legíveis, substituindo códigos e números brutos por rótulos claros e descritivos.
Perguntas Frequentes
A aula “Agrupando e rotulando dados” é grátis?
Sim — o texto completo de “Agrupando e rotulando dados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Agrupando e rotulando dados”?
Transforme valores em categorias. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Agrupando e rotulando dados”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- A expressão CASE
- CASE pesquisado versus simples
- Agrupando e rotulando dados
- CASE em ORDER BY e agregações