Promedio de fechas en un Select -VFP8

631 views
Skip to first unread message

Luis la Romana

unread,
Aug 20, 2014, 1:31:59 PM8/20/14
to publice...@googlegroups.com
Buen dia mis estimados, estoy ejecutando un Select a una tabla DBF, con todo bien, pero con el campo avg(fecha) me devuelve error
SQL: hay un agregado en una expresión no numérica

¿Estoy con parámetros SET ENGINEBEHAVIOR 70, qué puedo hacer para promediar fechas en el Select?

Víctor Hugo Espínola Domínguez

unread,
Aug 20, 2014, 2:43:27 PM8/20/14
to publice...@googlegroups.com
Hola Luis la Romana

Las fechas no se pueden promediar por que el promedio está definido como el cociente entre la suma de núneros y la cantidad de dichos números. La fecha no es un número a pesar de estar almacenada por algunos programas como un número.

Si lo que quieres es la fecha intermedia equidistante entre la fecha mínima y la máxima puedes usar lo siguiente:

SELECT DATE() - ((DATE() - MIN(Fecha)) + (DATE() - MAX(Fecha)))/2 FROM tuTabla

Un "promedio" entre todas las fechas sería así:

SELECT DATE() - AVG(DATE() - Fecha) FROM tuTabla

Aclaro que no sé que cornos significa el resultado ;-)

Saludos,
Víctor.
Lambaré - Paraguay.


Luis la Romana

unread,
Aug 20, 2014, 3:05:15 PM8/20/14
to publice...@googlegroups.com
Gracias por la idea, con min y max creo que me puedo armar algo, para el caso no se requiere que sea exacto el dato.

Carlos Miguel FARIAS

unread,
Aug 20, 2014, 6:41:29 PM8/20/14
to Grupo Fox
Si quieres sacar la fecha promedio (no confundir con la mediana) podes convertir la fecha a formato juliano, obtener la suma, obtener promedio y lo que da convertirlo a gregoriano otra vez.
Ver ayuda para funciones correspondientes (Sys algo).-
Saludos: Miguel, La Pampa (RA)

Víctor Hugo Espínola Domínguez

unread,
Aug 20, 2014, 7:26:12 PM8/20/14
to publice...@googlegroups.com
Hola Carlos

SELECT SYS(10, AVG(VAL(SYS(11, Fecha)))) FROM tabla

SELECT DATE() - AVG(DATE() - Fecha) FROM tabla

Ambas instrucciones dan el mismo resultado, pero sigo sin entender el significado :-(

Saludos,
Víctor.
Lambaré - Paraguay.
 

Carlos Miguel FARIAS

unread,
Aug 21, 2014, 7:54:26 AM8/21/14
to Grupo Fox

Eso te da la diferencia entre la fecha actual y el promedio de fechas, expresado en días

Víctor Hugo Espínola Domínguez

unread,
Aug 21, 2014, 9:47:57 AM8/21/14
to publice...@googlegroups.com
Hola Carlos

Lo que no entiendo es el significado y utilidad del concepto "promedio" de fechas.

Saludos,
Víctor.
Lambaré - Paraguay.

Carlos Miguel FARIAS

unread,
Aug 21, 2014, 10:25:38 AM8/21/14
to Grupo Fox
No hice la pregunta original, solo propuse una respuesta a la pregunta.
Podría utilizar el promedio de fechas para sacar la antigüedad promedio.
Por ejemplo, tienes una flota de vehículos, y quieres saber la antigüedad promedio, promedias las fechas de compra, y obtienes la fecha promedio de compra, que se la restas a la fecha de hoy y obtienes dicha antigüedad promedio.
Saludos: Miguel, La Pampa (RA)

P.D. Los amigos me dicen Miguel, así que pueden usar ambos nombres (o uno u otro, como gusten)

Luis la Romana

unread,
Aug 21, 2014, 11:04:32 AM8/21/14
to publice...@googlegroups.com
Sí entiendo que por ser un Select hay restricciones, si fuera numérico el dato es cosa fácil. Con respecto a la fecha actual creo que no debo operar nada, básicamente tengo fechas cercanas y quiero estimar una fecha promedio entre ellas, no necesito contar los dias que hay de esas fecha al dia de hoy. Ejemplo:
01/04/14
15/04/14
25/05/14
30/06/14
En una hoja de cáculo el promedio es 10/5/2014, algo así necesito estimar, pero creo que me basta con tomar max y min.

Víctor Hugo Espínola Domínguez

unread,
Aug 21, 2014, 11:27:14 AM8/21/14
to publice...@googlegroups.com
Hola Luis la Romana

SELECT SYS(10, AVG(VAL(SYS(11, Fecha)))) FROM tuTabla

SELECT DATE() - AVG(DATE() - Fecha) FROM tuTabla

Ambas instrucciones dan el resultado que quieres.

Saludos,
Víctor.
Lambaré - Paraguay.

mpulla

unread,
Aug 21, 2014, 11:35:58 AM8/21/14
to publice...@googlegroups.com
Hola Luis

Victor Hugo ya te dio la solución.

Saludos.
Mauricio
Reply all
Reply to author
Forward
0 new messages