lunes, 4 de noviembre de 2013

Hallar promedio fechas en oracle

Se puede sacar el promedio de dos fechas,  ordenandolas de futuro a pasado, usando operaciones matemáticas, sin ninguna función oracle.

Código:
SELECT ((to_date('23/03/2010','dd/mm/yyyy')- to_date('10/03/2010','dd/mm/yyyy'))/2)+to_date('10/03/2010','dd/mm/yyyy') FROM dual

Si son mas fechas pues tendras que tipear mas operaciones para que te de lo que buscas o meter toda esa lógica en una función almacenada.
La resta de dos fechas te da un número, y fecha+numero te da fecha.

Pero es mejor: 
Crear una tabla "números", donde se guarda en un campo fecha la fecha.
Y la fecha promedio de toda la tabla se saca así:


Código:
SELECT (SELECT SUM(
to_date(fecha,'dd/mm/rrrr')-(SELECT MIN(to_date(fecha,'dd/mm/rrrr')) FROM  numeros)
) FROM numeros)  / (SELECT COUNT(fecha) FROM numeros) + (SELECT MIN(to_date(fecha,'dd/mm/rrrr')) FROM  numeros) FROM dual
Como se hace:

Saco el número de dias que hay ente cada fecha y la primera fecha.

Ejm
25/03/2010
20/03/2010
15/03/2010

entonces
10
5
0
Sumo eso y lo divido entre el número de fechas que existen(3) = 5
y a la primera fecha le sumo ese número de dias
y el promedio en este caso es 20/03/2010.


Fuente: http://www.forosdelweb.com/f100/promedio-fechas-oracle-790710/


No hay comentarios:

Publicar un comentario