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;