2011-09-08 147 views
0

我有一个时间格式的列,它需要从最新到最旧排序。我想要做的是找出每个相邻记录之间的时间差异。棘手的部分是我需要总结所有的时间差异,然后除以所有时间记录的数量 - 1。这可以在MySQLMySQL添加时间值之间的差异来查找平均差异。

+0

你没有在同一个问题中得到答案吗?:http://stackoverflow.com/questions/7312055/how-do-you-create-an-average-time-difference-between-records-in-mysql –

+0

不是相当好的答案,但不完全是我需要。这些答案提供的是记录的平均时间,我需要的是平均时间差异。所以我想我会把它分解成更小的部分。 – pointhigh

+0

你试过我的回答吗?它计算'(MaxTime-MinTime)/(Count-1)',它与你想要的基本相同。 –

回答

0

对不起,如果我有点太罗嗦,但我不能收集你的MySQL经验水平。

也道歉,如果我不明白你的问题。但在这里呢...

首先,你不需要总结和设计,MySQL有一个平均函数叫你avg()。详情请看这里 http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

你想要的东西可以通过我认为的子查询来完成。有关子查询的更多信息,请看这里。 http://dev.mysql.com/doc/refman/5.0/en/select.html

基本上,你要首先创建一个排序列的表。

SELECT someid, time 
    FROM table 
    ORDER BY TIME 

使用在与本身,而是与移位指数加入表子查询(之前获取的时间和之后的时间)

SELECT * 
    FROM table1 as t1 INNER JOIN table2 as t2 ON t1.someid = t2.someid+1 

并就

SELECT avg(t2.time-t1.time) 
GROUP BY t1.someid 
使用的AVG
+0

感谢@Martin Nielsen对你的回应,回答你关于我对Mysql知道多少的问题,并且与你的subquerys合作将我的知识推向最高。你能告诉我你是如何将它组装成一个空洞查询? – pointhigh