Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ponderar valor entre dos fechas

Estas en el tema de Ponderar valor entre dos fechas en el foro de Mysql en Foros del Web. Buenas, Tengo una pequeña duda, y después de buscar y buscar sigo sin saber como enfocarlo. El enunciado del problema es el siguiente. Tengo filas ...
  #1 (permalink)  
Antiguo 28/09/2010, 03:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 1 mes
Puntos: 0
Exclamación Ponderar valor entre dos fechas

Buenas,

Tengo una pequeña duda, y después de buscar y buscar sigo sin saber como enfocarlo.

El enunciado del problema es el siguiente.

Tengo filas que contienen dos fechas, FechaIncio, FechaFin y un valor, Valor.

Por ejemplo:
Fila 1: 01.01.10, 31.01.10, 8
Fila 2: 08.01.10, 07.02.10, 16
Fila 3: 15.01.10, 07.02.10, 9

Ahora quiero sacar un resumen por dias/semanas/mes... por ejemplo para semanas, como el valor de la primera fila es 8 y costa de 4 semanas (para redondear). Sería un valor 2 para cada semana. la fila 2, un valor 4, y la fila 3 (son 3 semanas) un valor de 3.

El select resultante para el resumen semanal debería dar:

Semana 1 --- 2 (Fila 1 tiene 4 semanas con valor 8, 1 semana es valor 2)
Semana 2 --- 6 (Valor 2 de la Fila 1 + Valor de la fila 2 ponderada (4))
Semana 3 --- 9
Semana 4 --- 9
Semana 5 --- 7

Muchas gracias.
  #2 (permalink)  
Antiguo 28/09/2010, 04:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Ponderar valor entre dos fechas

con
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
y usando para unit WEEK, DAY, MONTH, etc.
Eso puede darte el número de semanas, días, meses, etc. entre las dos fechas
De todas formas, antes tienes que resolver algún otro problema: parece que para las fechas has usado campos de tipo varchar. Eso es un error. Deberías haber usado un campo date e introducir los datos con este formato 2010-05-30
Luego está el problema de la exactitud y si vas a contar 8 días como dos semanas o no, y también tendrás que resolver si vas a usar decimales a la hora de sacar los resultados o no.

La respuesta para sacar por semanas, en el caso de que ya hubieras incluido las fechas bien, sería algo así:
SELECT (valor/TIMESTAMPDIFF(WEEK,fechainicial,fechafinal)) res FROM tutabla
Esto te resta fecha y te da semanas completas y luego divide el valor por ese número de semanas. Tienes soluciones para sacar semanas incompletas, pero primero mira a ver si esto empieza a servirte.

Etiquetas: dos, fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:06.