Analise linhas com funções de janela
Calcule rankings e métricas sem perder o detalhe das linhas.
- 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.
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.
Classifique pedidos por cliente
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
Tabelas e registros de exemplo
Cada teste recria um banco de dados em memória no dialeto escolhido antes de executar a consulta.
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);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…