Função de atraso SQL

Função de atraso SQL

A função de atraso no SQL permite buscar a linha anterior em um deslocamento específico da linha atual. Isso significa que você pode acessar a linha anterior da linha atual. Você também pode especificar um deslocamento específico para acessar o segundo, terceiro e assim por diante na linha anterior.

Vamos discutir como podemos usar a função de atraso no SQL.

Função Sintaxe

A sintaxe da função é como mostrado:

Lag (Scalar_expression [, Offset] [, padrão])
Sobre ([partition_by] order_by);

Os parâmetros da função são expressos como mostrado abaixo:

  1. escalar_expression - refere -se ao valor de retorno com base em um deslocamento especificado da linha atual.
  2. Desvio - define o número de elementos anteriores da linha atual a partir da qual acessar os valores. Por padrão, o SQL usará um valor de deslocamento de 1.
  3. Padrão - Define o valor padrão se o valor de deslocamento estiver além do escopo da partição. O valor padrão é nulo.
  4. Partição por - particionar os dados em uma ou mais partições, dependendo da condição especificada.
  5. Ordenar por - expressão para ordenar os dados em cada partição.

Exemplo 1

Suponha que tenhamos uma tabela contendo dados dos funcionários, como mostrado:

Para obter os nomes atuais e anteriores dos funcionários, podemos executar a consulta como mostrado:

Selecione Full_name, LAG (Full_Name)
Over (partição por categoria Ordem por ID) como prev_emp
De funcionários;

O código acima deve retornar os nomes atuais e anteriores dos funcionários em cada partição.

A saída é como mostrado:

Exemplo 2

Se não houver linha anterior na partição, a função retornará nulo. Se quisermos definir um valor para as linhas inexistentes, podemos definir o parâmetro padrão como mostrado:

Selecione Full_name, LAG (Full_Name, 1, 'Pessoa desaparecida')
Over (partição por categoria Ordem por ID) como prev_emp
De funcionários;

Isso deve substituir os valores nulos por 'pessoa desaparecida.'A saída será mostrada abaixo:

Exemplo 3

Suponha que queremos acessar duas linhas de volta da linha atual? Podemos fazer isso especificando o deslocamento como mostrado:

Selecione Full_name, Lag (Full_Name, 2, 'N/A')
Over (partição por categoria Ordem por ID) como prev_emp
De funcionários;

A consulta acima deve voltar a duas linhas e selecionar seu valor.

Saída:

Conclusão

Neste artigo, você aprendeu a usar a função sql lag () para acessar a linha anterior da linha atual.

Obrigado pela leitura!!