Função principal SQL

Funcao Principal Sql



A função SQL lead() permite acessar a próxima linha da linha atual em um deslocamento específico. Resumindo, a função lead() permite acessar a próxima linha da atual. Ao especificar o valor do deslocamento, você pode acessar as próximas 1, 2, 3, etc. linhas da atual.

É o oposto da função lag() que permite acessar as linhas anteriores.







Função SQL Lead()

A sintaxe da função é a seguinte:



LEAD(expressão_valor, deslocamento [, padrão])
SOBRE (
[PARTIÇÃO POR partição_expressão]
ORDER BY sort_expression [ASC | DESC]
);

A seguir estão os argumentos suportados:



  1. expressão_valor – Especifica o valor de retorno da linha anterior. A expressão deve ser avaliada como um único valor.
  2. desvio – Especifica quantas linhas avançam da linha atual para acessar.
  3. padrão – Define o valor padrão se o deslocamento estiver fora do escopo da partição. Por padrão, o valor é definido como NULL.
  4. Particionar por – Especifica como particionar os dados.
  5. Ordenar por – Define o formato de ordem das linhas em cada partição.

Configuração de dados de amostra

Antes de nos aprofundarmos no funcionamento da função lead(), vamos começar configurando a tabela básica para fins de demonstração.





CRIAR TABELA produtos (
product_id INT CHAVE PRIMÁRIA AUTO_INCREMENT,
nome_do_produto VARCHAR(255),
categoria VARCHAR(255),
preço DECIMAL(10, 2),
quantidade INT,
data_de_expiração DATA,
código de barras BIGINT
);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Chapéu de Chef 25cm',
'padaria',
24,67,
57,
'09/09/2023',
2854509564204);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Ovos de codorna - enlatados',
'despensa',
17,99,
67,
'2023-09-29',
1708039594250);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Café - Egg Nog Capuccino',
'padaria',
92,53,
10,
'2023-09-22',
8704051853058);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Pêra - Espinhosa',
'padaria',
65,29,
48,
'2023-08-23',
5174927442238);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Massa - Cabelo de Anjo',
'despensa',
48,38,
59,
'05/08/2023',
8008123704782);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Vinho - Prosecco Valdobiaddene',
'produzir',
44,18,
3,
'2023-03-13',
6470981735653);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Pastelaria - Mini Francês Sortido',
'despensa',
36,73,
52,
'2023-05-29',
5963886298051);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Laranja - Enlatado, Mandarim',
'produzir',
65,0,
1,
'2023-04-20',
6131761721332);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)
valores ('Porco - Ombro',
'produzir',
55,55,
73,
'01/05/2023',
9343592107125);

inserir
em
produtos (nome_do_produto,
categoria,
preço,
quantidade,
data de validade,
código de barras)

valores ('Dc Hikiage Hira Huba',
'produzir',
56,29,
53,
'2023-04-14',
3354910667072);

Exemplo 1:

Neste caso, temos acesso à tabela “produtos” que contém as informações do produto. Suponha que queiramos obter o próximo código de barras da linha atual.

Podemos usar a função lead() da seguinte maneira:



Suponha que temos uma tabela que contém as informações de um funcionário da seguinte forma:

selecione
Nome do Produto,
preço,
lead(código de barras) over (partição por categoria
ordenar por
preço asc) como next_item
de
produtos p;

O código fornecido particiona os dados com base na categoria. Em seguida, ele busca o próximo código de barras na partição usando a função lead().

A saída resultante é a seguinte:

Exemplo 2:

Se não houver próxima linha em uma coluna específica (fora do limite), a função definirá o valor como NULL conforme mostrado no exemplo anterior.

Para definir um valor padrão para qualquer acesso fora do escopo, podemos fazer o seguinte:

selecione
Nome do Produto,
preço,
lead(código de barras, 1, 'N/A') over (partição por categoria
ordenar por
preço asc) como next_item
de
produtos p;

Definimos o valor padrão como “N/A”. Isso deve substituir qualquer valor fora do limite, conforme mostrado na saída a seguir:

OBSERVAÇÃO : definir o deslocamento como 1 é semelhante a não especificar nenhum valor.

Exemplo 3:

Suponha que você queira acessar as próximas duas linhas da linha atual. Podemos fazer isso definindo o valor do deslocamento como 2.

Um exemplo de consulta é ilustrado a seguir:

selecione
Nome do Produto,
preço,
lead(código de barras, 2, 'N/A') over (partição por categoria
ordenar por
preço asc) como next_item
de
produtos p;

Esta consulta retorna as próximas duas linhas em cada partição, conforme mostrado a seguir:

Aí está!

Conclusão

Neste tutorial, aprendemos como trabalhar com a função lead() para obter o próximo item da linha atual.