Java MySQL重复事件
我正在构建一个java应用程序,它将从MySQL数据库中查找重复事件 我的桌子看起来像这样:Java MySQL重复事件,java,mysql,sql,database-design,pattern-matching,Java,Mysql,Sql,Database Design,Pattern Matching,我正在构建一个java应用程序,它将从MySQL数据库中查找重复事件 我的桌子看起来像这样: | **EventID** | **Device** | **Level** | **TimeStamp** | (id) 001 40% 1/18/2016 4:50:20 事件类似于:设备001在1/18/2016 4:50:20时变为40% 我如何查找以下事件: 设备A在每个工作日的7:30:00左右变为36%左右 或 设备B在每周三晚上15
| **EventID** | **Device** | **Level** | **TimeStamp** |
(id) 001 40% 1/18/2016 4:50:20
事件类似于:设备001在1/18/2016 4:50:20时变为40%
我如何查找以下事件:
设备A在每个工作日的7:30:00左右变为36%左右
或
设备B在每周三晚上15:30:00左右转到90%左右
请注意,级别和时间并不是事件的最终结果(这就是为什么它存在的原因)。MySQL是否有方法查找事件并返回时间间隔和级别间隔?因为我知道如果我运行以下操作,性能会很差:
For (all devices) {
For (time 00:00:00 to time 23:59:59) {
For (level 0% to 100%) {
//SELECT based on level intervals and time intervals
}
}
}
上述方法也会有偏差,因为此处预设了时间和电平间隔。举个例子,如果事件总是发生在7:40左右,而我在7:20和7:40之间做间隔,我不会发现那么多的事件。级别也一样。MySQL没有直接的工具来实现这一点 首先,确定哪种类型的精度对您的应用程序有意义。例如,“大约40%”是否意味着39.9到40.1?还是35到45?还是别的什么?《时代》也是如此——20分钟的窗口足够精确吗?或者应该是1分钟还是1小时 然后折叠。也就是说,“每日”忽略一天,并在一天中的某个时间段求和。对于“工作日”,忽略周末 和双倍总和。。。下限(值/10)为每个常规的10个单位范围提供一个不同的整数。FLOOR((值+5)/10)为您提供10个单位间隔的整数,但移动了5个单位。迷路的让我从另一个角度来探讨这个问题 如果有一组读数17,18,18,19,19,19,20,21,22,23。按一楼分组将给出
- 整数=1,计数=6(17..19),中点=15;及
- 整数=2,计数=4(20..23),中点=25
- 计数=10,中点=20