← Voltar a Data Engineer — Indicium-AI

🔴 SQL — Joins e Window Functions

Data Engineer — Indicium-AI

Apresentação

📊 SQL — Essencial

Formato entrevista: Exercícios em pseudo-code ou whiteboard — saber escrever/desenhar a lógica.


Joins

  • INNER: Só linhas com match em ambas.
  • LEFT: Todas da esquerda + match da direita (NULL se não houver).
  • RIGHT: Todas da direita + match da esquerda.
  • FULL OUTER: Todas de ambas, NULL onde não há match.
  • CROSS: Produto cartesiano (cuidado).

Window Functions

  • OVER (PARTITION BY col ORDER BY col): Agregação por partição sem reduzir linhas.
  • ROW_NUMBER(), RANK(), DENSE_RANK(): Ordenação dentro da partição.
  • LAG(), LEAD(): Acesso a linhas anteriores/seguintes.
  • Exemplo: SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY date DESC) as rn — última compra por cliente.

Padrões para migração (whiteboard)

Deduplicação (top 1 por grupo)

WITH ranked AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY updated_at DESC) as rn
  FROM source
)
SELECT * FROM ranked WHERE rn = 1

Top-N por grupo

-- Top 3 vendas por cliente
SELECT * FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) as rn
  FROM sales
) WHERE rn <= 3

Comparação período a período (LAG)

SELECT date, amount, LAG(amount) OVER (ORDER BY date) as prev_amount
FROM daily_sales

Zona de prática

Sem perguntas. Clica em Editar para adicionar.

Desafios de código

Deduplicação (pseudo-code SQL)

Escreve a lógica para deduplicar por customer_id, mantendo a última transação (por date).

Top 3 por grupo (pseudo-code)

Top 3 produtos mais vendidos por categoria. Escreve a lógica SQL.