我有逐分钟收集的数据。它看起来像这样(这只是一个摘录):
id tstamp name elapsed_time reason
54945 2014-03-26 15:09:02 foobar 00:02:02 6
54845 2014-03-26 15:08:02 foobar 00:01:02 6
54775 2014-03-26 15:07:02 foobar 00:06:02 9
54711 2014-03-26 15:06:02 foobar 00:05:02 9
54647 2014-03-26 15:05:02 foobar 00:04:01 9
54583 2014-03-26 15:04:02 foobar 00:03:01 9
54519 2014-03-26 15:03:02 foobar 00:02:01 9
54455 2014-03-26 15:02:02 foobar 00:01:00 9
54375 2014-03-26 15:01:02 foobar 00:57:38 6
54311 2014-03-26 15:00:02 foobar 00:56:38 6
54246 2014-03-26 14:59:02 foobar 00:55:37 6
54182 2014-03-26 14:58:02 foobar 00:54:37 6
我想计算一个特定代码(理由)上某个“名称”的时间。有人可以在不同的时刻处理某个代码,并且可以随时返回到先前的代码,在这种情况下,elapsed_time将被重置。
我认为一个简单的SQL查询可以完成工作,所以我尝试了:
SELECT agent_name, tstamp, reason, elapsed_time
FROM rtv_data
WHERE DATE(tstamp) = DATE(CURDATE()) AND agent_name = 'foobar'
GROUP BY reason
但结果并不像预期的那样:
name tstamp reason elapsed_time
foobar 2014-03-26 14:03:25 6 00:00:11
foobar 2014-03-26 12:54:40 9 03:51:22
我尝试过研究时间序列的主题。显然,这可以使用自联接来解决,但由于我对SQL很新,我只是想不出怎么做。
任何帮助都将不胜感激。