Voltar para a lista de artigos Artigos
9 minutos de leitura

Função SQL LEAD

Conheça a função SQL LEAD, uma função importante para quem trabalha com SQL na análise de dados. Aprenda, por meio de exemplos, como usar essa função na prática.

A função SQL LEAD é uma função de janela SQL muito importante e útil. As funções de janela do SQL são essenciais para fazer uma análise de dados eficiente. Elas permitem que você trabalhe com grupos de linhas e linhas individuais ao mesmo tempo. Elas facilitam a criação de relatórios complexos. São úteis ao preparar classificações, comparar diferentes períodos de tempo, calcular totais em execução, médias móveis, o comprimento da série e muito mais.

Se você quiser aprender sobre as funções de janela do SQL, confira nosso cursoFunções de Janela (Window Functions) em SQL . Ele inclui mais de 200 exercícios detalhados e prática prática. Você também pode usar nossa Folha de consulta SQL Funções de Janela (Window Functions) em SQL para referência rápida.

O que é a função SQL LEAD?

A função SQL LEAD é uma função de janela SQL que permite acessar dados de uma linha subsequente e compará-los com a linha atual. Isso é especialmente útil quando você precisa trabalhar com sequências de dados. Por exemplo, se estiver analisando dados de vendas, o LEAD pode mostrar as vendas de amanhã ao lado das de hoje, tudo em uma única linha. Isso facilita a visualização imediata de alterações ou tendências.

Você pode usar a função LEAD para:

  • Comparar os números de vendas de um período para o outro.
  • Calcular a diferença nos níveis de estoque de um dia para o outro.
  • Estimar valores futuros para fins de orçamento ou previsão.

LEAD A função LAG é semelhante à , outra função de janela do SQL. A principal diferença é que LEAD examina as próximas linhas, enquanto LAG examina as linhas anteriores. Use LEAD quando quiser ver o que acontecerá em seguida e LAG quando precisar revisar o que aconteceu antes. Ambas são úteis para comparar dados com linhas próximas.

Para obter exemplos de uso das funções LEAD e LAG e para comparar seus recursos, consulte nosso guia A função LAG e a função LEAD no SQL.

Sintaxe básica da função LEAD do SQL

A maneira mais simples de usar a função LEAD é com apenas um argumento, que especifica a coluna que você deseja examinar:

LEAD(column1) OVER (ORDER BY column2)

Aqui está um detalhamento dessa sintaxe:

  • column1: Esta é a coluna da qual você deseja acessar os dados na próxima linha.
  • OVER: Essa cláusula faz parte da sintaxe da função de janela. Você deve usá-la em todas as funções de janela. Ela é usada para definir a janela sobre a qual a função LEAD operará.
  • ORDER BY column2: ORDER BY: Essa cláusula especifica a ordem em que as linhas devem ser processadas e determina a próxima linha da qual serão extraídos os dados. A cláusula ORDER BY é obrigatória para LEAD.

Essa sintaxe obterá o valor da coluna especificada (column1) na próxima linha, com base na ordenação (ORDER BY column2) definida. Se não houver uma próxima linha, a função retornará NULL.

Exemplo 1: uso básico da função SQL LEAD

Vamos ver um exemplo básico de uso da função LEAD. Suponha que você tenha uma tabela chamada production_schedule com colunas para a data e a quantidade de produtos necessários:

production_datequantity_required
2024-04-01 150
2024-04-02 180
2024-04-03 200

Se você quiser saber a quantidade necessária para o dia seguinte, use a função LEAD da seguinte forma:</P

SELECT
  production_date,
  quantity_required,
  LEAD(quantity_required) OVER (ORDER BY production_date) AS next_day_quantity
FROM
  production_schedule;

Essa consulta adicionará uma coluna que mostrará a quantidade necessária para o dia seguinte junto com a quantidade necessária para o dia de hoje.

production_date quantity_required next_day_quantity
2024-04-01 150 180
2024-04-02 180 200
2024-04-03 200 null

Em nossa consulta, OVER(ORDER BY production_date) ordena as linhas por data de produção. A função LEAD examina a próxima linha após a linha atual e obtém o valor quantity_required dela. A próxima linha depois de 2024-04-01 é a linha de 2024-04-02. A quantidade necessária para 2024-04-02 é 180, e é isso que LEAD retorna. Se não houver uma próxima linha, a função LEAD retornará NULL: não há uma próxima linha para 2024-04-03, portanto, next_day_quantity para ela é NULL.

LEAD - exemplo

Sintaxe da função LEAD Continuação: Parâmetros opcionais Offset e Default

A sintaxe completa da função LEAD recebe mais dois argumentos opcionais, offset e default. Eles oferecem mais controle sobre o comportamento de LEAD.

LEAD(column1, offset, default) OVER (... ORDER BY column2)

Veja a seguir um detalhamento dessa sintaxe:

  • column1: Esta é a coluna da qual você deseja acessar os dados em uma linha subsequente.
  • offset: Esse argumento inteiro opcional especifica quantas linhas à frente da linha atual você deseja examinar. Se você omitir esse parâmetro, o padrão é 1, portanto, ele buscará os dados da próxima linha.
  • default: Esse argumento opcional fornece um valor padrão que a função retornará se o deslocamento especificado exceder os limites do conjunto de resultados. Se for omitido, o valor de retorno padrão será NULL.
  • OVER: Essa palavra-chave introduz a especificação da janela, definindo como as linhas são agrupadas e ordenadas para o propósito de LEAD.
  • ORDER BY column2: Essa cláusula especifica a ordem em que as linhas são processadas. Ela determina a "próxima" linha da qual extrair dados para cada linha no conjunto de resultados da consulta atual.

Exemplo 2: Argumentos de deslocamento e padrão

Vamos ver offset e default em um exemplo. Usando a mesma tabela production_schedule, suponha que você queira ver a quantidade necessária não apenas para o dia seguinte, mas para dois dias à frente, e queira evitar os valores de NULL usando 0:

SELECT
  production_date,
  quantity_required,
  LEAD(quantity_required, 2, 0) OVER (ORDER BY production_date) AS two_days_later_quantity
FROM
  production_schedule;
production_date quantity_required two_days_later_quantity
2024-04-01 150 200
2024-04-02 180 0
2024-04-03 200 0

Aqui, você fornece 2 como argumento de deslocamento. Isso diz à função LEAD para procurar duas linhas à frente, em vez da próxima linha. Você também fornece 0 como argumento padrão. Isso faz com que a função LEAD exiba 0 em vez de NULL quando não houver nenhuma linha subsequente da qual extrair dados.

LEAD - exemplo 2

Exemplo 3: Função LEAD com PARTITION BY

Obviamente, você pode usar a sintaxe completa das funções de janela com a função LEAD. Por exemplo, você pode combiná-la com PARTITION BY. Suponha que sua tabela production_schedule contenha dados sobre vários produtos. Você deseja fazer previsões separadamente para cada produto.

production_date product_id quantity_required
2024-04-01101150
2024-04-02101180
2024-04-03101200
2024-04-0110290
2024-04-02102110
2024-04-03102120

Você pode particionar seus dados em OVER(), da seguinte forma:

SELECT
  production_date,
  product_id,
  quantity_required,
  LEAD(quantity_required) OVER (PARTITION BY product_id ORDER BY production_date) AS next_day_quantity
FROM
  production_schedule;

Essa consulta fornece os requisitos de produção do dia seguinte para cada produto, mantendo os cálculos separados para cada product_id.

production_date product_id quantity_required next_day_quantity
2024-04-01 101 150 180
2024-04-02 101 180 200
2024-04-03 101 200 null
2024-04-01 102 90 110
2024-04-02 102 110 120
2024-04-03 102 120 null

Exemplos práticos da função LEAD

Nesta seção, veremos exemplos práticos de uso da função LEAD em situações do mundo real. A função LEAD é particularmente útil em áreas como análise de vendas, gerenciamento de estoque e programação de produção.

Exemplo prático 1: Planejamento de pedidos de farinha para produção de panificação

Cenário: Uma padaria precisa planejar a quantidade de farinha a ser pedida para a produção de pão. É importante ter ingredientes suficientes sem excesso de estoque. Os dados sobre a produção de pão planejada são armazenados na tabela daily_bread_production.

production_date batches_planned
2024-04-01 20
2024-04-02 25
2024-04-03 30

Sabemos que cada lote precisa de 2 kg de farinha. Queremos descobrir a demanda de farinha para hoje e amanhã. Esta é a consulta que poderíamos usar:

SELECT
  production_date,
  batches_planned * 2 AS flour_needed_today_kg,
  LEAD(batches_planned * 2, 1, 0) OVER (ORDER BY production_date) AS flour_needed_tomorrow_kg
FROM
  daily_bread_production;

A consulta calcula a quantidade de farinha necessária para o dia atual e a necessidade para o dia seguinte usando a função LEAD.

Aqui está o resultado da consulta:

production_date flour_needed_today_kg flour_needed_tomorrow_kg
2024-04-01 40 50
2024-04-02 50 60
2024-04-03 60 null

É claro que esse é um exemplo simplificado, mas você pode facilmente imaginar como esse tipo de consulta poderia ser usado em um cenário real para prever os recursos necessários com base na programação de produção planejada.

Exemplo prático 2: Diferença entre duas linhas

Cenário: em uma configuração de análise financeira, a função LEAD (ou LAG) é usada para calcular a alteração nas vendas de um dia para o outro. Os dados sobre as vendas diárias são armazenados na tabela daily_sales.

sales_date total_sales
2024-04-01 100
2024-04-02 110
2024-04-03 90
2024-04-04 150

Essa consulta calculará as vendas do dia seguinte, o aumento das vendas de hoje para as vendas do dia seguinte e o crescimento percentual dia a dia:

SELECT
  sales_date,
  total_sales,
  LEAD(total_sales) OVER (ORDER BY sales_date) AS next_day_sales,
  LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales AS increase,
  ROUND(((LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales) / total_sales) * 100, 1) AS percentage_growth
FROM
  daily_sales;

Essa consulta usa o site LEAD para encontrar as vendas do dia seguinte. Em seguida, usa o site LEAD e o valor do dia atual para calcular o aumento. Por fim, ela usa o site LEAD e as vendas de hoje para calcular o crescimento percentual diário.

Aqui está o resultado:

sales_date total_sales next_day_sales increase percentage_growth
2024-04-01 100 110 10 10.0
2024-04-02 110 90 -20 -18.2
2024-04-03 90 150 60 66.7
2024-04-04 150 null null null

Para obter mais exemplos e uso detalhado das funções de janela, consulte o artigo Exemplo de função da Janela SQL com explicações, que oferece uma perspectiva mais ampla e cenários adicionais. Esse recurso pode ajudar a aprofundar sua compreensão e aumentar sua capacidade de implementar as funções de janela do SQL de forma eficaz.

Conclusão e recursos adicionais

Exploramos a função SQL LEAD, uma poderosa função de janela SQL que permite que os analistas vejam as linhas subsequentes em seus conjuntos de dados. Discutimos a sintaxe básica da função LEAD e mostramos sua aplicação em vários cenários, como tendências de vendas, gerenciamento de estoque e programação de produção.

Para quem está começando a usar as funções de janela, recomendo nosso curso Funções de Janela (Window Functions) em SQL . Trata-se de um programa de treinamento interativo e prático criado para familiarizá-lo com toda a sintaxe e os aplicativos das funções de janela do SQL. Ele inclui 218 exercícios práticos que o ajudarão a dominar os detalhes das funções de janela do SQL.

Se estiver procurando praticar as funções de janela do SQL para solidificar sua compreensão, nosso conjunto de práticas Funções de Janela (Window Functions) em SQL oferece 100 exercícios práticos que desafiarão e consolidarão seu conhecimento. Além disso, nosso artigo SQL Funções de Janela (Window Functions) em SQL Practice Exercises fornece um conjunto de exercícios selecionados de nossos cursos para testar suas habilidades em funções de janela e lhe dar uma prévia de como são nossos cursos.