0Pricing
SQL Academy · Aula

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 WHEN criam 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 CASE para contar as linhas de cada categoria.
  • Sempre trate NULL explicitamente com WHEN col IS NULL para que ele receba um rótulo significativo.
  • CASE também funciona dentro de ORDER BY para 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

  1. A expressão CASE
  2. CASE pesquisado versus simples
  3. Agrupando e rotulando dados
  4. CASE em ORDER BY e agregações
← Voltar para SQL Academy