我不是 SQL 专家,远非如此。我正在编写一个 Rails 应用程序,我也是新手。我有桌面编程背景。
我的应用程序有一个数据表,其中一列是记录数据的时间。我想在每一行周围创建一个带有“安全窗口”的查询。我的意思是,它返回第一行,然后在 X 分钟内(基于时间记录的列)它不会返回任何数据,一旦 X 分钟结束,它将返回下一行。
例如:
ID | TimeLogged
1 | 3/5/2010 12:01:01
2 | 3/5/2010 12:01:50
3 | 3/5/2010 12:02:03
4 | 3/5/2010 12:10:30
5 | 3/5/2010 01:30:03
6 | 3/5/2010 01:31:05
有了 5 分钟的“安全窗口”,我想创建一个查询以返回:
1 | 3/5/2010 12:01:01
4 | 3/5/2010 12:10:30
5 | 3/5/2010 01:30:03
(它跳过了 12:01:50 和 12:02:03 项目,因为它们发生在第一个项目的 5 分钟内。)
另一个例子,我想返回 15 分钟的“安全窗口”:
1 | 3/5/2010 12:01:01
5 | 3/5/2010 01:30:03
也许我必须返回所有数据并自己解析?
最佳答案
可以在已呈现为十五分钟切片的列上使用 GROUP BY,但这并不能为您提供对此实例所需的精确控制。您所能期望的最好的结果是将它们分类到单独的十五分钟桶中,但这并不能保证两次之间有十五分钟的间隔。事实上,它们更有可能靠得更近,因为 11:59:59 和 12:00:01 将被视为两个不同的时间间隔。
基本上您只能使用更手动的方法,因为我不知道有任何 MySQL 操作可以满足您的要求。
如果您需要多次执行此操作,您可能希望在确定指定时间后标记数据库中的特定记录。
关于sql - 如何使用 'safe window' 为基于时间的元素创建 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3045664/