【发布时间】:2022-01-20 15:22:08
【问题描述】:
我有一张表格,其中包含来自实地调查的不同物种及其出现次数(时间戳):
species | timestamp
A | 2021-04-01T12:35
A | 2021-04-01T12:36
B | 2021-04-01T12:36
A | 2021-04-01T12:37
A | 2021-04-01T12:39
C | 2021-04-01T12:40
B | 2021-04-01T12:42
C | 2021-04-01T12:44
C | 2021-04-01T12:44
B | 2021-04-01T12:47
现在我想计算它们,不是总数,而是每个 10 分钟的块,其中只计算第一次出现。 这意味着在 12:31 到 12:40 之间有物种 A、B、C。 12:41 到 12:50 之间有 B、C 种。
对于一个 10 分钟的块,我可以做类似的事情
SELECT DISTINCT(species)
FROM table
WHERE timestamp IS <condition>
但我需要的是这样的:
chunk_start_time | chunk_end_time | species
2021-04-01T12:31 | 2021-04-01T12:40 | A
2021-04-01T12:31 | 2021-04-01T12:40 | B
2021-04-01T12:31 | 2021-04-01T12:40 | C
2021-04-01T12:41 | 2021-04-01T12:50 | B
2021-04-01T12:41 | 2021-04-01T12:50 | C
我的时间戳没有秒数。这就是为什么它是 x1 到 x0 分钟的原因。 我如何在 SQLite 中进行数学运算,或者我应该更好地使用 Python pandas 吗?
【问题讨论】:
-
您的预期结果不包含任何计数。
-
我对每个物种都计数一次。
-
这不算数。编辑您的问题并更好地解释您想要什么。
-
我编辑了题目,问题很清楚。
-
事实上,每个小时的最后一个块是例如:
2021-04-01T12:51到2021-04-01T13:00。这是正确的吗?
标签: sql sqlite timestamp distinct timespan