Posts

Showing posts from March, 2020

Analytic functions LEAD y LAG- Example

Las funciones LAG y LEAD te permiten obtener el valor siguiente o anterior respectivamente al registro actual considerando un orden definido. Explicarlo quizás no es tan sencillo como con un ejemplo, imaginemos que tenemos una tabla donde está el resumen de un estados de cuenta bancario donde podemos ver el saldo que tenía el cliente al cierre de cada mes. create table Edo_Cta (Mes date, Saldo number) tablespace users; insert into Edo_Cta (mes, Saldo) values (to_date('1-Jan-2019','dd-Mon-yyyy'), 1000); insert into Edo_Cta (mes, Saldo) values (to_date('1-Feb-2019','dd-Mon-yyyy'), 1200); insert into Edo_Cta (mes, Saldo) values (to_date('1-Mar-2019','dd-Mon-yyyy'), 2000); insert into Edo_Cta (mes, Saldo) values (to_date('1-Apr-2019','dd-Mon-yyyy'), 2500); insert into Edo_Cta (mes, Saldo) values (to_date('1-May-2019','dd-Mon-yyyy'), 2800); insert into Edo_Cta (mes, Saldo) values (to_date('1-Jun-2019'

Analytic functions RANK - Example

Funciones analíticas como dba utilizamos muy poco esta consulta un poco más complejas sin embargo son muy poderosas, aquí un ejemplo sencillo de la función RANK. Con la función RANK podemos numerar o jerarquizar un subconjunto de registros según sus valores, cada subconjunto de valores diferentes la numeración o jerarquía se reinicia. create table entradas (nombre varchar2(32), fec_entrada date) tablespace users; INSERT INTO entradas (nombre, fec_entrada) SELECT chr(mod(LEVEL,10)+65),(sysdate+LEVEL) FROM dual CONNECT BY LEVEL <= 100; Hacemos la magia con la función RANK y veremos que los ordena según la fecha de entrada y les da un número según su jerarquía de menor a mayor. SQL> select * from (select nombre,fec_entrada, rank() over (partition by nombre order by fec_entrada) as myrank from entradas); NOMBRE FEC_ENTRA MYRANK -------------------------------- --------- ---------- A 22-MAR-20 1 A