【发布时间】:2020-09-10 12:36:10
【问题描述】:
我有以下数据:
X, Y, Receiver, Timestamp
1.534268, 51.03796, 126, 2017-06-01 02:01:01
1.534268, 51.03793, 126, 2017-06-01 02:03:01
1.534268, 51.03799, 133, 2017-06-01 02:05:01
1.534268, 51.03716, 133, 2017-06-01 02:09:01
1.534268, 51.03766, 126, 2017-06-01 02:10:01
1.534268, 51.03766, 126, 2017-06-01 02:17:01
1.534268, 51.03795, 126, 2017-06-01 02:19:01
1.534268, 51.03791, 133, 2017-06-01 02:22:01
1.534268, 51.03746, 126, 2017-06-01 02:24:01
1.534268, 51.03796, 133, 2017-06-01 02:31:01
我需要 SQL 查询来做两件事:
- 以大约 10 分钟的间隔选择记录,所以我最终得到如下结果:
X, Y, Receiver, Timestamp
1.534268, 51.03796, 126, 2017-06-01 02:01:01
1.534268, 51.03766, 126, 2017-06-01 02:10:01
1.534268, 51.03795, 126, 2017-06-01 02:19:01
1.534268, 51.03796, 133, 2017-06-01 02:31:01
然后我将如何修改查询以选择 15 分钟、30 分钟和每小时间隔的数据?
- 根据上面的结果,我如何计算每个接收者下的记录数,即
Receiver 126: 3,
Receiver 133: 1
【问题讨论】:
-
您识别记录开头的规则不清楚。有时,它是在 10 分钟内。有时不是。您需要提供有关如何拆分数据的更多信息。
-
这张表有主键吗,写查询效率更高
-
时间戳永远不会精确相隔 10 分钟。所以我需要相隔最接近 10 分钟的连续记录。第一条记录是:02:01:01,因此选择的下一条记录应该是 02:10:01,因为它与第一条记录的差最接近 10 分钟。如果这有意义?
-
我们需要看看您的尝试...否则您只是要求我们为您编写代码。
标签: sql sql-server timestamp