我在MySQL中有一个SQL表,如下所示:
id technician_id actionDate station_id
1 10 1317909863 1
2 10 1317909864 1
3 10 1317909865 1
4 10 1317909866 2
5 10 1317909867 2
6 10 1317909868 2
7 10 1317909869 2
8 10 1317909870 2
9 10 1317909871 3
10 10 1317909872 1
11 10 1317909873 1此数据用于跟踪现场技术人员。id列是一个自动增量键。actionDate列是自1970年以来的秒数,station_id是技术人员在其上执行操作的现场工作站的id。
我想从这些数据中确定一些“统计数据”。例如,我想确定技术人员所做的路线(从站点1到2,然后从2到3,然后从3返回到1)。还想确定他每次去一个车站花了多少时间(例如:他去了车站1,停留了3分钟,然后开车30分钟去了车站2,停留了15分钟,然后在20分钟内开车去了车站3,停留了10分钟,然后回到了1)。
正如你可以得到的,这是一个追踪系统。我需要先按actionDate排序,然后再按station_id分组。但由于技术人员可以多次访问某些站点,因此无法按该列对其进行分组。
有什么建议吗?
我有这个,但它对所有具有相同station_id的行进行了重新分组:
select station_id, min(actionDate), max(actionDate)
from Action
where technician_id = 10
group by station_id
order by actionDate;发布于 2012-04-17 04:06:22
我讨厌推荐游标,但看看这一点,它似乎是一个候选者。游标可以在数据中快速移动一次,并在移动过程中填充一个临时表。
我花了很多时间寻找重叠的时间范围等类似的问题,并逐渐意识到,在某些情况下,运行光标是更好、更快的选择。
也许这里有人可以提出不同的建议..。
如果你需要一个例子,请告诉我。
发布于 2012-04-17 04:25:14
这在mssql中会更容易,但本文可能会有所帮助,http://www.explodybits.com/2011/11/mysql-row-number/
对于第一部分,您想要查询其中行号为1的按站点id划分的查询。
https://stackoverflow.com/questions/10180793
复制相似问题