Menu
Coddy logo textTech

Funções LEAD e LAG

Parte da seção Fundamentos do Journey de SQL da Coddy. Lição 61 de 72.

As funções LEAD e LAG nos permitem acessar o valor da linha atual n passos atrás ou n passos à frente.

Por exemplo, se quisermos calcular a proporção da receita de uma empresa para a linha atual e para um mês atrás, podemos extrair o valor do mês anterior:

idrevenuemonth
15325
24926
33937
47238
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id

Isso criará a seguinte tabela:

idrevenueprev_month_revenue
1532 
2492532
3393492
4723393

Assim, podemos calcular a proporção prev_month_revenue/revenue.

Se, em vez disso, usássemos a função LEAD, ela obteria a receita do próximo mês de cada linha:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id
idrevenuenext_month_revenue
1532492
2492393
3393723
4723 
challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • air_conditioners: id, efficiency, strength, month

Compare a eficiência de cada ar-condicionado com a do anterior.

Escreva uma consulta que mostre a eficiência de cada ar-condicionado juntamente com a eficiência do ar-condicionado instalado anteriormente (com base no id). Além disso, calcule a diferença de eficiência entre o ar-condicionado atual e o anterior. Ordene o resultado por id e efficiency em ordem crescente.

Colunas esperadas na saída:

  • id
  • efficiency
  • previous_efficiency (usando LAG)
  • efficiency_difference (eficiência atual - eficiência anterior)

Por fim, envolva a consulta e filtre a primeira linha, cujo previous_efficiency (e, portanto, efficiency_difference) está vazioso, ou seja, é NULL:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency IS NOT NULL

Experimente você mesmo

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Playground de SQL