Carregando
0x80Lição 9 de 9

Laboratório prático: monte relatório de vendas

Combine filtro, agregação e regra de negócio em uma consulta.

12 min Questionário com 5 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • Produzir relatório mensal determinístico a partir de vendas brutas.

Consultas de relatório em produção costumam ter etapas: filtrar linhas de origem, agregar métricas e derivar indicadores finais. Este laboratório simula esse fluxo com dados de vendas.

SQL example
1WITH monthly AS (
2  SELECT month,
3         region,
4         SUM(total) AS revenue
5  FROM sales
6  WHERE status = 'paid'
7  GROUP BY month, region
8)
9SELECT month, region, revenue
10FROM monthly
11ORDER BY month, region;

Ordenação determinística (ORDER BY) torna relatório reproduzível em testes e integrações. Deixe regras de negócio explícitas para facilitar manutenção futura.

Principais conclusões

  • Produzir relatório mensal determinístico a partir de vendas brutas.

  • Use nomes de tabela e coluna que tornem a consulta legível.

  • Confirme quais linhas a consulta afeta antes de depender do resultado.

Quiz da aula

5 perguntas · aprovação com 4 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: escreva consultas SQL

Escreva consultas em pequenos bancos de dados de exemplo e execute-as localmente no navegador. Cada teste começa com um banco SQLite novo.

Exercício 1

Monte relatório mensal de receita paga

+25 XP

Considere apenas vendas pagas e retorne month, region, revenue e rótulo performance (target se revenue >= 100, senão watch), ordenando por month e region.

  • Receita paga por mês e região
Escolha o mecanismo de banco de dados para executar os testes.
Tabelas e registros de exemplo

Cada teste recria um banco de dados em memória no dialeto escolhido antes de executar a consulta.

sample-data.sql
CREATE TABLE sales (month TEXT, region TEXT, total REAL, status TEXT); INSERT INTO sales VALUES ('2026-01', 'north', 60, 'paid'), ('2026-01', 'north', 50, 'paid'), ('2026-01', 'south', 40, 'paid'), ('2026-01', 'south', 15, 'pending'), ('2026-02', 'north', 80, 'paid'), ('2026-02', 'south', 130, 'paid');
query.sql
Carregando editor…

Usando SQLite 3 (sql.js), um banco de dados embutido. As consultas rodam localmente em um worker, com um banco em memória novo a cada teste.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…