我们有一个数据库,我们只存储数据值和时间戳(作为MySQL中的一行) when the data value changes. 因此,数据库中的时间戳之间没有固定的间隔 . 该表看起来像这样:
MySQLTimestamp Data
2014-10-01 18:01 1
2014-10-03 16:13 2
2014-10-07 15:45 1
2014-10-09 10:08 3
THE PROBLEM: 我们想要计算平均值 over time ,假设数据值继续为2,直到值在数据库中的下一行上发生变化 .
一个简单的AVG不会起作用,因为它只计算行数之间的平均值 . 在下一行表示数据值发生变化之前,这不会计算值可以在很长一段时间内继续保持相同的值 .
真的很感谢你的帮助!
1 回答
自我加入并计算日期或时间的持续时间作为权重
Data
.使用
datediff
将天数间隔计算为重量 . 如果您想要小时或分钟作为间隔,您可以使用timediff
并将结果传输到小时,分钟或秒 .这是sql fiddle demo和结果:
左连接的另一个版本: