在0.4秒内计算平均值。mysql中的间隔

在0.4秒内计算平均值。mysql中的间隔,mysql,Mysql,我有一张带有加速计数据的表“cardoor”: Time | dx | dy ===================================== 1464684066.38 | -2.090 | -0.570 1464684066.45 | -2.150 | -0.670 1464684066.48 | -2.090 | -0.650 我试图从“时间”列中以0.4秒的间隔获得“dx”和“dy”的平均值 到目前为止,我已经有了

我有一张带有加速计数据的表“cardoor”:

Time          | dx        | dy
=====================================
1464684066.38 |  -2.090   |   -0.570
1464684066.45 | -2.150    |   -0.670
1464684066.48 | -2.090    |   -0.650
我试图从“时间”列中以0.4秒的间隔获得“dx”和“dy”的平均值

到目前为止,我已经有了这个mySQL来获取间隔数据,但它对我来说不起作用,我的意思是它太慢了(我等了30分钟才得到一个有200万行的表)

我需要添加两列avg(dx)和avg(dy),它们是最后0.4秒的平均值

SELECT b.Time, AVG(dx), AVG(dy)
FROM cardoor b LEFT JOIN cardoor p
ON p.Time BETWEEN b.Time-0.4 AND b.Time
GROUP BY b.Time

我很乐意在MySQL之外考虑更合适的建议。

< P>如果你不想要滚动平均类型的结果,那么在时间栏中应用一点数学将允许没有连接的查询。


这对我来说很有效:

SELECT round(`time` / 0.4) * 0.4 Time1, AVG(dx), AVG(dy) 
FROM timegroup 
GROUP BY Time1; 

将时间除以所需的时间除法,将其四舍五入为整数,然后再乘以时间除法-同时给出该时间块中的所有条目。然后只需按时间1分组并对其他两列求平均值。

准确地说,您要获取的平均值是什么类型的-看起来您的查询将为200万个条目中的每个条目提供平均值-平均值在0.4秒的时间内-有效地得出滚动平均值。这意味着您需要将200万条记录与200万条记录进行比较,因此速度较慢。如果您想将200万条记录拆分为0.4秒的数据块,并取其平均值(返回的记录远少于200万条),那么您可能会大大加快速度。我尝试了下一个查询:[code]选择平均值(dx),来自_unixtime(ROUND(Time/(60*0.00666))*60*0.00666)根据auto.cardoor1组的四舍五入时间[/code],得到1秒的平均结果。(因此,它在1秒内不起作用。)。我得到的时间格式是'20/01/2016 18:54:44',但我需要Unix格式,实际上,它是如何正确地为我工作的:按时间1从时间组中选择round(
time
/0.4)*0.4 Time1,AVG(dx),AVG(dy);平均超过预期的结果。谢谢你,保罗,这似乎对我很有效。fastI真的不确定你是否想要滚动平均结果,但现在我知道你想要什么了,我已经将我的评论作为一个答案发布了——如果你愿意将其标记为答案,那么任何有类似问题的人都可以将其视为答案。在答案被接受后这么长时间后,是否有任何理由反对投票——也许是解决问题的更好方法?