top of page

Coffee and Tips Newsletter

Inscreva-se na nossa newsletter semanal

Nos vemos em breve!

Entendendo SQL OVER (PARTITION BY) com Exemplos Práticos

Foto do escritor: JPJP



SQL OVER (PARTITION BY)

Como usar a Window Function OVER (PARTITION BY)?

Se você já trabalhou com SQL, provavelmente conhece a cláusula GROUP BY, que permite agrupar dados e aplicar funções agregadas. Mas e se você quiser calcular agregações sem agrupar os dados? É aí que entra o poderoso OVER (PARTITION BY ...).


Neste post, vamos explorar esse conceito com exemplos práticos e de fácil compreensão.


Mas o que é OVER (PARTITION BY)?


A cláusula OVER (PARTITION BY column) pertence às Window Functions no SQL e permite realizar cálculos sobre um subconjunto de linhas sem alterar a estrutura da consulta.


Ela é útil para calcular somas, médias, contagens, ranking de dados e muito mais, sem precisar agrupar os registros com GROUP BY.


Comando básico:

FUNÇÃO_AGREGADA() OVER (PARTITION BY coluna)

  • FUNÇÃO_AGREGADA(): Pode ser SUM( ), AVG( ), COUNT( ), RANK( ), entre outras.

  • PARTITION BY coluna: Divide os dados em grupos com base na coluna especificada.


 

Exemplo 1: Soma acumulada por categoria


Vamos supor que temos uma tabela chamada vendas com os seguintes dados:



Agora, queremos calcular a soma acumulada (SUM( )) para cada categoria, sem agrupar os dados.




Resultado:



Entendendo o resultado:


  • O SQL calcula a soma de valor para cada categoria separadamente.

  • O resultado mostra a mesma soma para todas as linhas da mesma categoria, mas sem agrupar os registros.


Exemplo 2: Média de vendas por categoria


Se quisermos calcular a média de vendas dentro de cada categoria, podemos usar AVG( ) da mesma forma:


Resultado:



Entendendo o resultado:


  • O SQL calcula a média de valor para cada categoria e exibe o mesmo valor em todas as linhas pertencentes ao grupo.



Exemplo 3: Contagem de produtos por categoria


Se quisermos saber quantos produtos existem em cada categoria, usamos COUNT( ):



Resultado:



Entendendo o resultado:


  • O SQL conta quantos registros existem dentro de cada categoria e repete esse valor nas linhas do mesmo grupo.


Exemplo 4: Ranking de vendas dentro de cada categoria


Se quisermos numerar os produtos dentro de cada categoria com base no valor da venda, podemos usar RANK( ):




Resultado:



Entendendo o resultado:


  • O RANK( ) numera as vendas dentro de cada categoria.

  • Ele ordena os valores de forma decrescente, ou seja, a venda mais alta recebe 1.

  • Caso existam valores iguais, o ranking pode pular posições.



Conclusão


O uso de OVER (PARTITION BY ...) é uma técnica extremamente útil para análises no SQL, pois permite calcular valores por grupos sem precisar agrupar os dados.


  1. Funciona com funções agregadas (SUM( ), AVG( ), COUNT( ), etc.).

  2. Permite criar rankings e outras análises avançadas.

  3. Não agrupa os registros, mantendo a granularidade dos dados.


 

Quer Aprender Mais? Inscreva-se na nossa Newsletter semanal!


Não perca nossas dicas exclusivas de Tech e Data!



Receba semanalmente:

  • Tutoriais práticos e diretos sobre Engenharia de Software e Dados

  • Insights de tecnologia e notícias da semana

 

Comments


bottom of page