with
EmpleadoSalarioDiario as (
select 101 idEmpleado, to_date('2018-01-01', 'yyyy-mm-dd') Fecha, 100.0 Salario from dual
union all select 101, to_date('2018-01-02', 'yyyy-mm-dd'), 110 from dual
union all select 101, to_date('2018-01-03', 'yyyy-mm-dd'), 112 from dual
union all select 101, to_date('2018-01-04', 'yyyy-mm-dd'), 100 from dual
union all select 101, to_date('2018-01-05', 'yyyy-mm-dd'), 105 from dual
union all select 101, to_date('2018-01-06', 'yyyy-mm-dd'), 99 from dual
union all select 101, to_date('2018-01-07', 'yyyy-mm-dd'), 100 from dual
union all select 101, to_date('2018-01-08', 'yyyy-mm-dd'), 101 from dual
union all select 101, to_date('2018-01-09', 'yyyy-mm-dd'), 102 from dual
union all select 101, to_date('2018-01-10', 'yyyy-mm-dd'), 110 from dual
union all select 101, to_date('2018-01-11', 'yyyy-mm-dd'), 111 from dual
union all select 101, to_date('2018-01-12', 'yyyy-mm-dd'), 120 from dual
union all select 101, to_date('2018-01-13', 'yyyy-mm-dd'), 121 from dual
union all select 101, to_date('2018-01-14', 'yyyy-mm-dd'), 100 from dual
union all select 101, to_date('2018-01-15', 'yyyy-mm-dd'), 106 from dual
)
select a.*
, lag(a.Salario) over (partition by a.idEmpleado order by a.Fecha) SalarioDiaAnterior
, abs(a.Salario - lag(a.Salario) over (partition by a.idEmpleado order by a.Fecha)) DiferenciaSalario
, abs(a.Salario - lag(a.Salario) over (partition by a.idEmpleado order by a.Fecha)) / lag(a.Salario) over (partition by a.idEmpleado order by a.Fecha) * 100 DiferenciaPorcentualSalario
from EmpleadoSalarioDiario a
| IDEMPLEADO | FECHA | SALARIO | SALARIODIAANTERIOR | DIFERENCIASALARIO | DIFERENCIAPORCENTUALSALARIO |
|---|
101 | 01-JAN-18 | 100 | - | - | - | 101 | 02-JAN-18 | 110 | 100 | 10 | 9.09090909090909090909090909090909090909 | 101 | 03-JAN-18 | 112 | 110 | 2 | 1.78571428571428571428571428571428571429 | 101 | 04-JAN-18 | 100 | 112 | 12 | 12 | 101 | 05-JAN-18 | 105 | 100 | 5 | 4.76190476190476190476190476190476190476 | 101 | 06-JAN-18 | 99 | 105 | 6 | 6.06060606060606060606060606060606060606 | 101 | 07-JAN-18 | 100 | 99 | 1 | 1 | 101 | 08-JAN-18 | 101 | 100 | 1 | .9900990099009900990099009900990099009901 | 101 | 09-JAN-18 | 102 | 101 | 1 | .9803921568627450980392156862745098039216 | 101 | 10-JAN-18 | 110 | 102 | 8 | 7.27272727272727272727272727272727272727 | 101 | 11-JAN-18 | 111 | 110 | 1 | .9009009009009009009009009009009009009009 | 101 | 12-JAN-18 | 120 | 111 | 9 | 7.5 | 101 | 13-JAN-18 | 121 | 120 | 1 | .8264462809917355371900826446280991735537 | 101 | 14-JAN-18 | 100 | 121 | 21 | 21 | 101 | 15-JAN-18 | 106 | 100 | 6 | 5.66037735849056603773584905660377358491 |
15 rows selected.