Funções Janela SQL: Dicas para TPMs

01 Nov 2026 · Pela Trilha TPM

# Funções Janela SQL: Dicas para TPMs

Funções janela SQL são cruciais para análises avançadas em bancos de dados. Para candidatos a Technical Program Managers em startups de IA, dominar essas funções pode ser um diferencial importante.

O que você precisa saber

As principais funções janela que você deve conhecer são: ROW_NUMBER, RANK, DENSE_RANK, LAG, e LEAD.

ROW_NUMBER

A função ROW_NUMBER atribui um número único sequencial a cada linha dentro de uma partição de uma tabela.

RANK

A função RANK atribui uma classificação a cada linha dentro de uma partição, considerando a ordem especificada. Linhas com o mesmo valor recebem o mesmo ranking.

DENSE_RANK

A função DENSE_RANK funciona como o RANK, mas sem lacunas nos rankings. Mesmo se houver várias linhas com o mesmo valor, a lacuna não aparece.

LAG

A função LAG permite acessar dados de uma linha anterior sem usar uma junção self-join. Isso é útil para comparações entre linhas adjacentes.

LEAD

A função LEAD é a oposto do LAG, permitindo acessar dados de uma linha seguinte.

Exercícios Práticos

Exemplo 1: ROW_NUMBER

Suponha que você tenha uma tabela de vendas e quer atribuir um número sequencial para cada venda por mês.

``sql

SELECT venda_id, cliente_id, data_venda,

ROW_NUMBER() OVER (PARTITION BY EXTRACT(MONTH FROM data_venda) ORDER BY venda_id) AS numero_sequencial

FROM vendas;

`

Exemplo 2: RANK

Suponha que você queira classificar os clientes por valor total de vendas no mês passado.

`sql

SELECT cliente_id, SUM(valor_venda) AS total_vendas,

RANK() OVER (ORDER BY SUM(valor_venda) DESC) AS classificacao

FROM vendas

WHERE EXTRACT(MONTH FROM data_venda) = EXTRACT(MONTH FROM CURRENT_DATE - INTERVAL '1 month')

GROUP BY cliente_id;

`

Exemplo 3: DENSE_RANK

Suponha que você queira uma classificação sem lacunas para os clientes.

`sql

SELECT cliente_id, SUM(valor_venda) AS total_vendas,

DENSE_RANK() OVER (ORDER BY SUM(valor_venda) DESC) AS classificacao_denso

FROM vendas

WHERE EXTRACT(MONTH FROM data_venda) = EXTRACT(MONTH FROM CURRENT_DATE - INTERVAL '1 month')

GROUP BY cliente_id;

`

Exemplo 4: LAG

Suponha que você queira comparar o valor da venda atual com o da venda anterior.

`sql

SELECT venda_id, cliente_id, valor_venda,

valor_venda_anterior = LAG(valor_venda) OVER (PARTITION BY cliente_id ORDER BY venda_id)

FROM vendas;

`

Exemplo 5: LEAD

Suponha que você queira comparar o valor da venda atual com o da venda seguinte.

`sql

SELECT venda_id, cliente_id, valor_venda,

valor_venda_proxima = LEAD(valor_venda) OVER (PARTITION BY cliente_id ORDER BY venda_id)

FROM vendas;

``

O que os gerentes de contratação procuram

Os gerentes de contratação buscam candidatos que não apenas entendam conceitos avançados de SQL, mas também possam aplicar essas habilidades em contextos práticos. Eles querem ver como você pode usar funções janela para resolver problemas complexos de dados.

Erros Comuns a Evitar

- Subestimar a complexidade: Nem sempre é fácil usar funções janela. Não subestime a importância de entender as cláusulas PARTITION BY e ORDER BY.

- Confundições entre RANK e DENSE_RANK: Ambas são úteis, mas servem para diferentes propósitos. Certifique-se de entender quando usar uma em detrimento à outra.

- Uso incorreto do LAG e LEAD: Estes são poderosos, mas podem gerar resultados confusos se não forem usados corretamente.

- Falta de testes: Sempre teste suas consultas com dados reais para garantir que elas estão funcionando conforme o esperado.

- Negligenciar a performance: Com funções janela, o desempenho pode se tornar um problema com grandes conjuntos de dados. Sempre pense em como otimizar suas consultas.

Com essas dicas, você estará bem preparado para se destacar em entrevistas de TPM em startups de IA. Boa sorte!

Preparação intensiva para entrevistas TPM

15 dias de preparação focada: SQL avançado, Python, projetos de IA, stakeholders, governança. Comece hoje.

Ver planos