Como utilizar Partition By no SQL Server?
Nesse artigo irei mostrar de forma simples como utilizar a cláusula Partion By e para que ela serve. Vamos lá!
Introdução
A cláusula partition by serve para você pegar o resultado de uma consulta, dividir ela em pedaços como se cada pedaço fosse o resultado de uma consulta e poder aplicar funções de agregação em cada um desses pedaços, de forma individual, como por exemplo podemos utilizar o count, avg, sum, etc…
Exemplo
Para iniciarmos nosso case precisamos criar uma tabela chamada Estudante e inserir alguns dados nela, segue o exemplo abaixo:
Após inserção teremos os seguintes estudantes registrados em nossa tabela:
Agora imagine que seu gestor te peça para fazer um select que traga o nome, sexo, idade e a média da idade do sexo do aluno.
Para chegar a esse resultado, nós podemos separar os estudantes que são do sexo masculino e feminino e então aplicarmos a função de agregação AVG() para calcularmos a média da idade de cada sexo. Veja o exemplo abaixo.
Ainda não entendeu como o partition by fez isso? Olha a imagem abaixo:
Se você notar, o partition by partiu o resultado do nosso select em dois pedaços: feminino e masculino. E depois aplicou a função de agregação AVG em cada um desses pedaços.
Bônus
Existem diversas funções legais que podemos usar com a cláusula over além do partition by, dê uma olhada na documentação oficial para descobrir mais: https://docs.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver15