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!