mysql - 每分钟给定日期,每两个提取一次
问题描述
我有一个如下表:
ID Date Value
1 2018-04-29 14:51:01 0.1
2 2018-04-29 14:51:01 0.21
3 2018-04-29 14:51:01 0.123
2 2018-04-29 14:52:01 5.7
3 2018-04-29 14:52:01 1.2
1 2018-04-29 14:52:01 5.9
1 2018-04-29 14:53:01 1.23
3 2018-04-29 14:53:01 7.9
2 2018-04-29 14:53:01 1.68
1 2018-04-29 14:54:01 0.01
2 2018-04-29 14:54:01 0.068
3 2018-04-29 14:54:01 0.2686
2 2018-04-29 14:55:01 2.3
3 2018-04-29 14:55:01 3.4
1 2018-04-29 14:55:01 5.7
1 2018-04-29 14:56:01 102.357
3 2018-04-29 14:56:01 12.36
2 2018-04-29 14:56:01 123.47
1 2018-04-29 14:57:01 12379.42
2 2018-04-29 14:57:01 1230.1
3 2018-04-29 14:57:01 35.235
2 2018-04-29 14:58:01 1237.3
3 2018-04-29 14:58:01 4.68
1 2018-04-29 14:58:01 123.578
1 2018-04-29 14:59:01 1233.57
3 2018-04-29 14:59:01 23.457
2 2018-04-29 14:59:01 0.213
每分钟插入一次 ID 及其日期(在插入当前时间戳上)。一些 ID 可以在表格中存在一段时间,并且它们可以稍后在不同的时间重新出现。这些 id 没有顺序,它们可以在当前分钟“批次”的任何地方。
从此表中,我想每 2 分钟提取一次值,因此输出应如下所示:
ID Date Value
1 2018-04-29 14:51:01 0.1
2 2018-04-29 14:51:01 0.21
3 2018-04-29 14:51:01 0.123
1 2018-04-29 14:53:01 1.23
3 2018-04-29 14:53:01 7.9
2 2018-04-29 14:53:01 1.68
2 2018-04-29 14:55:01 2.3
3 2018-04-29 14:55:01 3.4
1 2018-04-29 14:55:01 5.7
1 2018-04-29 14:57:01 12379.42
2 2018-04-29 14:57:01 1230.1
3 2018-04-29 14:57:01 35.235
PD:我不能在这个查询中使用变量,但我可以根据需要创建函数/过程。
就我对 MySQL 的了解而言……对我来说最简单的事情是创建另一个表,其中包含每两分钟运行一次的预定事件并提取当前值并将它们插入新表中。
此查询的另一个问题是,如果仅由一个查询完成,则 1 分钟间隔表有数百万行具有许多不同的 ID。
那么,最好继续研究如何构建查询或创建带有预定事件的表?
解决方案
MySQLminute()
函数是您的解决方案的基础 - 它返回参数的分钟部分,例如:
minute('2018-04-29 14:51:01') -- returns 51
对此使用 mod 部门:
select ...
from ...
where minute(date) % 2 = 1 -- only odd minutes
同样,每三分钟将是:
where minute(date) % 3 = 1
等等。
如果你想更高级,你可以在你想要的小时后手工挑选分钟,例如所有的黄金时间:
where minute(date) in (2,3,5,7,11,13,17,23,29,31,37,41,43,47,53,59)
推荐阅读
- firebase - 在 pubspec.yaml 文件中添加 firebase_auth 或 cloud_firestore 时构建失败并出现异常(firebase_core 正在工作):
- docker - 参数化 docker-compose 图像拉取
- node.js - 如何在 Amazon Linux 2 平台上使用 Elastic Beanstalk 部署的 Nodejs 中实现 gzip 压缩?
- r - ggplot子集一个函数中的列表
- visual-studio - 在源代码管理比较功能中取消绑定滚动
- javascript - 在 Google 地图上显示/隐藏标记
- python - 通过 Github 部署 Heroku,超级用户创建
- javascript - 在 onChange 事件值的 flatpickr 中未分配 alpinejs
- c# - OpenRemoteBaseKey UnauthorizedAccessException:试图执行未经授权的操作
- javascript - 使用 google.script.host.close() 时,模态对话框不会写回工作表