Funções Analíticas Oracle e as suas aplicabilidades: Lag e Lead

Olá, galera!

Quanto tempo heim?

Hoje voltaremos a falar de funções analíticas, porque as vezes é necessário criar consultas que possam me dar o valor anterior ou até mesmo do próximo. Para não precisar criar várias consultas, trago duas funções super simples de aplicar na prática.

A primeira que falaremos é a Lag, ela tem a função de mostrar qual é o valor anterior, dentro da consulta.

Vamos primeiro pegar uma consulta simples da tabela Funcionario

 

SELECT NOME, SALARIO FROM FUNCIONARIO

Agora, vamos aplicar dentro da consulta a função LAG.

 SELECT NOME, SALARIO,

 LAG(SALARIO, 1, 0) OVER (ORDER BY SALARIO) AS SAL_PREV,

SALARIO – LAG(SALARIO, 1, 0) OVER (ORDER BY SALARIO) AS SAL_DIFF
FROM FUNCIONARIO;

Percebemos, que para o primeiro registro ele retorna 0, pois não encontra nenhum valor. Criei também uma coluna, onde mostra a diferença entre os valores do Salário com o Sal_Prev.

Aplicando a função LEAD

A função LEAD tem a característica, de procurar o valor da próxima linha dentro da consulta.

SELECT NOME,
SALARIO,
LEAD(SALARIO,
1, 0) OVER (ORDER BY SALARIO) AS SAL_NEXT,
LEAD(SALARIO,
1, 0) OVER (ORDER BY SALARIO) – SALARIO AS SAL_DIFF
FROM FUNCIONARIO;

Com isso abordamos mais funções analíticas, que podem nos ajudar no dia a dia.

Abraços e até a próxima!