Aula 12: Window Functions — RANK, ROW_NUMBER, LAG e LEAD

Aula 12: Window Functions — RANK, ROW_NUMBER, LAG e LEAD

Nesta aula, vamos explorar as fascinantes Window Functions do PostgreSQL, com foco nas funções RANK, ROW_NUMBER, LAG e LEAD. Estas funções são cruciais para realizar análises complexas e manipular conjuntos de dados de forma eficiente. Compreender e saber utilizar as Window Functions lhe permitirá criar consultas mais poderosas, otimizando relatórios e análises.

O que você vai aprender nesta aula

  • O que são Window Functions e como elas diferem de funções agregadas comuns.
  • Utilizar as funções RANK e ROW_NUMBER para ordenar dados.
  • Como usar LAG e LEAD para acessar linhas anteriores ou posteriores em um conjunto de dados.
  • Implementação prática de cada função em consultas SQL reais.

Entendendo as Window Functions

As Window Functions são uma característica avançada do PostgreSQL que permite realizar cálculos em um conjunto de linhas relacionadas ao valor atual sem agregar os resultados em uma única linha. Diferentemente das funções agregadas, que “colapsam” dados, as funções janela preservam as linhas originais e aplicam funções como soma cumulativa, média móvel e, claro, ranking.

RANK e ROW_NUMBER: Ordenando seus dados

Tanto o RANK quanto o ROW_NUMBER são Window Functions utilizadas para gerar números de classificação sobre partições de dados.


SELECT nome, departamento, salario,
       RANK() OVER (PARTITION BY departamento ORDER BY salario DESC) AS rank,
       ROW_NUMBER() OVER (PARTITION BY departamento ORDER BY salario DESC) AS row_number
FROM empregados;

No exemplo acima, estamos classificando empregados por salário dentro de cada departamento. RANK atribui o mesmo valor às linhas que têm o mesmo ranking, enquanto ROW_NUMBER atribui números únicos e sequenciais às linhas.

LAG e LEAD: Acessando linhas vizinhas

As funções LAG e LEAD são extremamente poderosas quando precisamos acessar os valores de linhas anteriores ou posteriores dentro de um conjunto de dados.


SELECT nome, salario,
       LAG(salario, 1) OVER (ORDER BY salario) AS salario_anterior,
       LEAD(salario, 1) OVER (ORDER BY salario) AS salario_proximo
FROM empregados;

No exemplo, LAG retorna o salário da linha anterior e LEAD retorna o salário da próxima linha quando ordenados por salário. Isso é particularmente útil para calcular diferenças entre linhas consecutivas, como variações de salário ou métricas de performance.

Aplicações Práticas de Window Functions

Em nossos projetos na JRT Technology Solutions, frequentemente usamos Window Functions para análises detalhadas de dados. Elas são usadas para cálculos como:

  • Analytics sobre vendas e comparações intertemporais.
  • Avaliação de desempenho ao longo do tempo.
  • Gerar relatórios detalhados sem a necessidade de subconsultas complexas.

Os nossos especialistas utilizam diariamente essas práticas para otimizar processos e relatórios de clientes.

Resumo da Aula 12

Nesta aula, você aprendeu a importância e a aplicação das Window Functions no PostgreSQL. Exploramos as funções RANK, ROW_NUMBER, LAG e LEAD para manipular dados de forma eficaz. Na próxima aula, vamos aprofundar nosso conhecimento explorando a função NTILE e seus usos em segmentação de dados. Fique atento para continuar avançando em seu domínio sobre PostgreSQL!

Quer aprender na prática com especialistas?

A JRT Technology Solutions oferece treinamentos e implementação de PostgreSQL para equipes corporativas.



Falar no WhatsApp

Thiago Paes Rodrigues

Com mais de 22 anos de experiência em Tecnologia da Informação, este profissional construiu uma trajetória sólida como empresário, atuando de forma estratégica na implementação de soluções tecnológicas que otimizam processos e impulsionam resultados em diferentes setores.