我有一个MySQL表,其中包含带有4个不同事件的日志。每个事件每隔15分钟左右记录在其自己的行中,但是并非每次都在同一时间一致地捕获它们。
表结构:
id datetime eventtype data
我需要对在相同基本时间范围内捕获的所有4个事件进行一些计算,通常是在彼此之间的5分钟之内。例如,事件1和2可能分别在10:41和10:42捕获,而事件3在10:44捕获,事件4甚至在10:45到达。
问题在于任何事件都可能比其他事件提前一分钟或更长时间。有没有一种方法可以在最近的时间范围内选择和分组每种事件类型的行?
由于某些事件可能不会出现,甚至被推迟几分钟甚至成为下一个时间范围的一部分,因此可能会出现一些不准确的情况。我只需要确保任何给定的分组都会对每种事件类型都有一个有效的事件(在计算时我可以检查该事件)。
我从 group by 开始,但由于每个事件的日期时间都不相同而失败了。这将是一个大表,所以我认为遍历行并逐一执行数学/分组没有任何意义,至少我希望这不是最佳方法。我不确定接下来要去哪里。任何朝着正确方向的指针将不胜感激!
样本数据
id datetime eventtype data
1 10:41 1 67
2 10:45 4 14
3 10:42 2 12
4 10:44 3 87
5 10:57 1 63
6 10:59 4 13
7 10:59 2 19
8 11:01 3 01
所需查询的结果:
datetime event1 event2 event3 event4
Result 1: 10:41 67 12 87 14
Result 2: 10:57 63 19 01 13