分组内的两个日期之间的SQL不同

时间:2019-02-25 16:48:03

标签: mysql sql date date-difference

我有这张桌子-

----------------------------------------------
ID  | user   | eventID   | type   | timestamp
----------------------------------------------
1   | 1      | 1         | 3      | 2019-02-08 15:30:00
2   | 1      | 1         | 3      | 2019-02-08 15:31:00
3   | 1      | 1         | 9      | 2019-02-08 15:31:30
4   | 2      | 1         | 3      | 2019-02-08 15:32:00
5   | 2      | 1         | 3      | 2019-02-08 15:32:45
6   | 3      | 1         | 3      | 2019-02-08 15:33:00
7   | 3      | 1         | 9      | 2019-02-08 15:34:00
8   | 3      | 2         | 3      | 2019-02-08 15:35:00
9   | 3      | 2         | 9      | 2019-02-08 15:36:00

我正在尝试为每个用户找到每个事件的类型3和类型9之间的时间差。

例如,此表的输出为-

----------------------------------------------
ID  | user   | eventID   | timeDifference in sec
----------------------------------------------
1   | 1      | 1         | 30
2   | 3      | 1         | 60
3   | 3      | 2         | 60

如您所见,每个用户可以有多个事件,并且不同的用户也可以有相同的事件。有些用户和事件同时具有两种类型,有些则没有。可能有多个类型3和类型9事件,但我希望彼此之间最接近的事件之间存在差异。而且类型9总是在类型3之后发生。如果有帮助,我还有一个单独的列,该列具有用于类型9事件的不同ID。因此,我试图为每个事件,每个用户找出这两种类型之间的时差。

我该怎么做?

编辑-我忘了提到对于每个用户,每个事件可以有多对3型和9型事件。所以我想要所有这些对的差异,彼此相邻,而不仅仅是每组的差异。

对于此表-

----------------------------------------------
ID  | user   | eventID   | type   | timestamp
----------------------------------------------
1   | 1      | 1         | 3      | 2019-02-08 15:30:00
2   | 1      | 1         | 3      | 2019-02-08 15:31:00
3   | 1      | 1         | 9      | 2019-02-08 15:31:30
4   | 2      | 1         | 3      | 2019-02-08 15:32:00
5   | 2      | 1         | 3      | 2019-02-08 15:32:45
6   | 3      | 1         | 3      | 2019-02-08 15:33:00
7   | 3      | 1         | 9      | 2019-02-08 15:34:00
8   | 3      | 2         | 3      | 2019-02-08 15:35:00
9   | 3      | 2         | 9      | 2019-02-08 15:36:00
10  | 3      | 2         | 3      | 2019-02-08 15:37:00
11  | 3      | 2         | 9      | 2019-02-08 15:37:40

输出应为-

----------------------------------------------
ID  | user   | eventID   | timeDifference in sec
----------------------------------------------
1   | 1      | 1         | 30
2   | 3      | 1         | 60
3   | 3      | 2         | 60
4   | 3      | 2         | 40

edit-我在编辑中提出了一个不同的问题。原来的问题已经回答了。

1 个答案:

答案 0 :(得分:1)

这回答了问题的原始版本:

Drop

这将返回最早的“ 9”时间戳和最新的“ 3”时间戳之间的差。