0Pricing
SQL Academy · Aula

OVER, PARTITION BY, ORDER BY

Entenda o modelo de funções de janela: OVER, PARTITION BY (agrupamento), ORDER BY (ordenação) e como ele difere de GROUP BY.

OVER, PARTITION BY, ORDER BY é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 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 é uma Função de Janela?

Uma função de janela calcula um valor em um conjunto de linhas relacionadas à linha atual — sem reduzir o resultado como GROUP BY faz. Você mantém todas as linhas AND obtém uma coluna agregada.

Exemplo Básico

Média do total dos pedidos em toda a tabela, em cada linha:

SELECT id, total,
       AVG(total) OVER () AS avg_total
FROM orders;

Cláusula OVER

A cláusula OVER (...) define a janela. Parênteses vazios significam "todo o conjunto de resultados".

SELECT id, total,
       SUM(total) OVER () AS grand_total
FROM orders;

PARTITION BY: Agrupando a Janela

Como GROUP BY, mas as linhas não são reduzidas:

SELECT id, user_id, total,
       SUM(total) OVER (PARTITION BY user_id) AS user_total
FROM orders;

-- Every order keeps its row; user_total is the same for all of one user's orders.

ORDER BY na Janela

ORDER BY dentro de OVER define a ordenação das linhas para cálculos cumulativos:

SELECT id, user_id, total,
       SUM(total) OVER (PARTITION BY user_id ORDER BY created_at) AS running_total
FROM orders;

-- Running total per user, ordered by date.

Janela vs GROUP BY

Comparação lado a lado:

-- GROUP BY: 1 row per user
SELECT user_id, SUM(total) FROM orders GROUP BY user_id;

-- Window: 1 row per order, with user total alongside
SELECT id, user_id, total,
       SUM(total) OVER (PARTITION BY user_id)
FROM orders;

Cada Linha, um Quadro Diferente

O "quadro" é o conjunto de linhas dentro da partição que a função examina. O quadro padrão com ORDER BY é "do início até a linha atual" — é isso que produz os totais cumulativos.

Janelas Nomeadas

Se várias funções compartilham uma janela, dê um nome a ela uma única vez:

SELECT id, user_id, total,
       SUM(total) OVER w AS running_sum,
       AVG(total) OVER w AS running_avg
FROM orders
WINDOW w AS (PARTITION BY user_id ORDER BY created_at);

A Maioria das Agregações Funciona como Função de Janela

COUNT, SUM, AVG, MIN, MAX — todas podem ser usadas em uma janela. Funções de janela especializadas incluem ROW_NUMBER, RANK, LAG/LEAD, NTILE etc.

Funções de Janela são Executadas Depois de WHERE

Ordem lógica: FROM → WHERE → GROUP BY → HAVING → window functions → SELECT → ORDER BY → LIMIT. Portanto, WHERE filtra antes que as janelas sejam calculadas.

Considerações de Desempenho

Funções de janela exigem ordenação (ou um hash). Para partições grandes, um índice nas colunas (partição, ordenação) evita a etapa de ordenação.

Recapitulação

Funções de janela adicionam valores agregados por linha.

  • OVER () = resultado inteiro
  • PARTITION BY = agrupa a janela
  • ORDER BY na janela = habilita cálculos cumulativos

Verificação rápida

O que SUM(x) OVER (PARTITION BY user_id) calcula?

Perguntas Frequentes

A aula “OVER, PARTITION BY, ORDER BY” é grátis?

Sim — o texto completo de “OVER, PARTITION BY, ORDER BY” é 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 “OVER, PARTITION BY, ORDER BY”?

Entenda o modelo de funções de janela: OVER, PARTITION BY (agrupamento), ORDER BY (ordenação) e como ele difere de GROUP BY. 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 1 de 4.

Quanto tempo leva a aula “OVER, PARTITION BY, ORDER BY”?

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. OVER, PARTITION BY, ORDER BY
  2. ROW_NUMBER, RANK, DENSE_RANK
  3. LAG, LEAD e padrões de séries temporais
  4. Totais acumulados e médias móveis
← Voltar para SQL Academy