MySQL muestra el promedio por día de enteros registrados aleatoriamente

Tenga una tabla que registre la marca de tiempo y la lectura de números enteros (fecha_entrada, lectura) de un medidor eléctrico (kwh). Me gustaría graficar los usos diarios... la mayoría de las lecturas son diarias, algunas tienen varios días de diferencia, horas aleatorias del día. Quiere el promedio diario de la diferencia de la entrada anterior devuelta para cada día. *Tenga en cuenta que los promedios no son precisos.

Example Data:
date_entered    reading
2012-06-01 17:02    18522
2012-06-02 14:56    18641
2012-06-03 10:55    18677
2012-06-06 15:16    18702
2012-06-11 13:28    18803
2012-06-13 17:33    18850

Example Output:
Date              Daily Average
2012-06-01 12:00    
2012-06-02 12:00    19
2012-06-03 12:00    130
2012-06-04 12:00    43
2012-06-05 12:00    43
2012-06-06 12:00    43
2012-06-07 12:00    8
2012-06-08 12:00    8
2012-06-09 12:00    8
2012-06-10 12:00    8
2012-06-11 12:00    21
2012-06-12 12:00    21
2012-06-13 12:00    22

preguntado el 12 de junio de 12 a las 20:06

¿Tiene la capacidad de crear una tabla de todas las fechas y luego unirse a eso? Si es así, podría llenar fácilmente los espacios, como el espacio entre 06-03 y 06-06, y luego crear una función que se distribuya en ceros de abajo hacia arriba. -

Sí, podría hacer eso... solo pensé que podría haber una forma más limpia en la que no había pensado. -

1 Respuestas

Puede seguir los pasos que tomó usted mismo para calcular los promedios manualmente. Aquí está su explicación explícita:

Tiene una lista de Lecturas que contienen dos piezas de información:

  • Timestamp
  • Agregado de Kwh

Y quieres una lista de Consumos Diarios con:

  • Fecha
  • consumo de kwh

Debe iterar sobre la primera lista y completar la segunda lista:

Para cada lectura (a partir del segundo día de sus registros):

  • Obtenga el último elemento en Lecturas que tiene una fecha anterior.
  • Compara las fechas y obtén la diferencia en días (debe ser >= 1)
  • Para cada día desde el día posterior a la última lectura hasta la fecha de lectura actual, cree una entrada en Consumo diario (a menos que ya se hayan creado porque tiene dos lecturas en la misma fecha)
  • Obtenga la diferencia en los consumos.
  • Divida la diferencia en el consumo por la diferencia en días para obtener el promedio.
  • Asigne esa media a los consumos de Kwh de cada uno de los Consumos Diarios desde el día siguiente a la última lectura hasta la fecha de lectura actual.

Voilà!

Debería funcionar incluso si tiene más de una lectura en la misma fecha, ya que solo sobrescribiría el promedio cuando llegue a la segunda lectura del mismo día (solo asegúrese de crear solo un elemento de Consumo diario por día).

Respondido el 12 de junio de 12 a las 21:06

Gracias por el consejo... Esto es probablemente lo que haré. - Edward

De nada. Esto debería ser suficiente. Me temía que quisieras tener en cuenta la hora del día de las lecturas, lo que te obligaría a dividir los días en diferentes lapsos de tiempo antes y después de las lecturas, cruzar lapsos de tiempo y consumos... y complicarlo por muy poco ganar en precisión. - Dil

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.