【问题标题】:MySQL show average per day of randomly recorded integerMySQL显示平均每天随机记录的整数
【发布时间】:2012-06-15 17:16:40
【问题描述】:

有一个表格记录电表 (kwh) 的时间戳和整数读数 (date_entered, reading)。想绘制每日使用情况...大多数读数是每天的,有些是相隔数天的 - 一天中的随机时间。想要每天返回上一个条目的差异的每日平均值。 *注意平均值不准确。

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

【问题讨论】:

  • 你有能力创建一个包含所有日期的表格然后加入吗?如果是这样,您可以轻松地填补空白,例如 06-03 和 06-06 之间的空白,然后创建一个自下而上跨零分布的函数。
  • 是的,我可以这样做......只是觉得他们可能是我没有想到的更清洁的方式。

标签: mysql date average


【解决方案1】:

您可以按照自己采取的步骤手动计算平均值。这是它的明确解释:

您有一个包含两条信息的读数列表:

  • 时间戳
  • 千瓦时聚合

而您想要一份每日消费清单:

  • 日期
  • 千瓦时消耗

您应该遍历第一个列表并填充第二个列表:

对于每次阅读(从记录的第二天开始):

  • 获取读数中具有先前日期的最新项目。
  • 比较日期并得出天数的差异(必须 >= 1)
  • 对于从最后一次阅读后的第二天到当前阅读日期的每一天,在每日消耗中创建一个条目(除非它们已经创建,因为您在同一日期有两个读数)
  • 获取消费差异。
  • 将消耗量差异除以天数差异得到平均值。
  • 将该平均值分配给从最近一次读数后一天到当前读数日期的每个每日消耗量的 Kwh 消耗量。

瞧!

即使您在同一日期有多个读数,它也应该可以工作,因为当您到达同一天的第二个读数时,它只会覆盖平均值(只需确保您每天只创建一个每日消费项目)。

【讨论】:

  • 感谢您的建议...这可能是我会做的。
  • 不客气。这应该足够了。我担心你想考虑阅读一天中的时间,这会迫使你将阅读前后的不同时间跨度划分为不同的时间跨度,交叉乘以时间跨度和消费......并让它变得更复杂一点提高准确性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多