【发布时间】:2021-12-04 16:17:29
【问题描述】:
我有一个如下所示的数据库:
timestamp | entity_id
--------------------+----------
2021-12-01 10:00:00 | A
2021-12-01 09:00:00 | A
2021-12-01 08:00:01 | A
2021-12-01 08:00:00 | B
2021-12-01 07:00:00 | A
timestamp 是UNIQUE,但我事先不知道不同的时间戳相距多远。我怎样才能写出一个能让我得到以下结果的语句?
entity_id | following_entity_id | count
----------+---------------------+------
A | A | 2
A | B | 1
B | A | 1
当使用 pandas 时,我可能会使用它的 shift 方法,但在这种情况下我需要使用原始 SQL 来执行此操作。
【问题讨论】:
-
您想要以下还是之前的 entity_id(按时间戳顺序)?此外,您仅发布了 4 行作为示例数据。如果表中后面还有一对 As,这是否也会计入第一行的结果中?
-
我想要
entity_ids在整个表格中按时间顺序紧跟实体 - 我是否正确理解了您的问题?另请注意,我的示例数据中的时间戳都相隔 1 小时,在我的真实数据中不一定是这种情况。 PS:我相应地编辑了问题。 -
"2021-12-01 10:00:00 | A" 的 A 是最后一个 entity_id 并且没有后续 entity_id(意味着按时间顺序之后没有任何内容)。 “2021-12-01 08:00:01 | A”的 A 具有“2021-12-01 10:00:00 | A”的 A,如下 entity_id。 "2021-12-01 08:00:00 | B" 的 B 有 "2021-12-01 08:00:01 的 A 作为以下 entity_id 等等。这是你想要的吗?
-
是的,然后我假设我拍摄
GROUP BY following_entity_id和COUNT(*)以获得如问题所示的结果。
标签: sql sqlite group-by count window-functions