Carregando
0x70Lição 8 de 9

Analise linhas com funções de janela

Calcule rankings e métricas sem perder o detalhe das linhas.

12 min Questionário com 5 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • Diferenciar funções de janela de agregações com GROUP BY.

Funções de janela calculam valores sobre linhas relacionadas, preservando cada linha original no resultado. OVER(...) define a janela, com PARTITION BY e ORDER BY.

SQL example
1SELECT customer_id,
2       order_id,
3       total,
4       ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY total DESC) AS spend_rank
5FROM orders;

Ao contrário de GROUP BY, funções de janela não reduzem automaticamente cada grupo a uma linha. São ótimas para top-N por grupo e totais acumulados.

Principais conclusões

  • Diferenciar funções de janela de agregações com GROUP BY.

  • 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

Classifique pedidos por cliente

+25 XP

Retorne customer_id, order_id, total e rank por gasto (maior para menor) dentro de cada cliente; ordene por customer_id e rank.

  • Ranking por cliente
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 orders (order_id INTEGER, customer_id INTEGER, total REAL); INSERT INTO orders VALUES (101, 1, 20), (102, 1, 50), (201, 2, 30), (202, 2, 10);
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…