Uma window function calcula sobre um conjunto de linhas relacionadas à linha atual, mas não as colapsa, então você mantém todas as linhas e ganha uma coluna calculada. O GROUP BY colapsa as linhas em uma por grupo. Isso significa que você consegue mostrar cada pedido ao lado do gasto total do cliente no mesmo resultado, o que com GROUP BY exigiria uma subquery e um join de volta.
Por que os entrevistadores perguntam isso
Window functions são a linha divisória entre SQL básico e intermediário, e a maior parte do trabalho real de analista (totais acumulados, rankings, comparações entre períodos, deduplicação) depende delas. Os entrevistadores querem o ponto do não colapsar, um entendimento correto de PARTITION BY versus ORDER BY e, de preferência, a consciência de que o frame padrão da janela muda o resultado.
Como estruturar sua resposta
- Comece pela diferença principal: as linhas são preservadas, não colapsadas.
- Explique PARTITION BY como o agrupamento e ORDER BY como a sequência.
- Dê dois ou três usos reais que você já escreveu.
- Cite a cláusula de frame e o padrão que vale quando existe ORDER BY.
Exemplo de resposta
A diferença central é que o GROUP BY colapsa e a window function não. Com uma janela eu mantenho todas as linhas e adiciono uma coluna calculada sobre um conjunto definido de vizinhas, então consigo mostrar cada transação ao lado do total acumulado daquele cliente sem um self join. O PARTITION BY diz quais linhas pertencem à mesma janela, então eu particiono por customer_id, e o ORDER BY define a sequência dentro dela, que é o que faz totais acumulados e comparações com lag funcionarem. Eu uso isso o tempo todo: row_number para pegar o registro mais recente por entidade, lag para calcular a variação mês a mês, sum sobre uma partição ordenada para receita acumulada. O que vale mesmo saber é o frame. Assim que você adiciona ORDER BY, o frame padrão vai do início da partição até a linha atual, que é exatamente o que você quer para um total acumulado, mas não para um total da partição inteira. Se eu quero o total do grupo em todas as linhas, eu deixo o ORDER BY de fora ou defino o frame explicitamente.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Qual é o frame padrão da janela e quando ele surpreende as pessoas?
- Como você calcularia uma média móvel de sete dias em SQL?
- Dá para filtrar diretamente pelo resultado de uma window function?
Mais perguntas para Analista de Dados
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas