我有一个表格,其中包含对沿图形边缘移动的对象的观察,该表格具有以下形式:
PK | TIMESTAMP | object_id | from_id | to_id
其中object_id
是某个对象的 ID,from_id
并且to_id
是顶点。
由于以高频率观察到运动,因此元组
(object_id, from_id, to_id)
PK
对于不同的和经常重复TIMESTAMPS
。我对所有单独的边遍历感兴趣,所以如果一个 id 为 1 的对象从顶点 1 移动到 2,从 2 到 1 和从 1 到 2,我想得到一个结果:
object_id | from_id | to_id
1 | 1 | 2
1 | 2 | 1
1 | 1 | 2
我的问题:如何编写此查询?
元组必须以
from_id, to_id
这样的方式排序,当from_id
或to_id
发生变化时,它会属于不同的分组。我想把它写成一个存储过程,但我想到了一些更有趣的东西(我刚刚从我回答这个问题中得到这个想法大约 3 小时前更新表上的排名)我会分阶段进行
第一阶段:样本数据
第 2 阶段:加载样本数据
第 3 阶段:创建查询,其中运行的计数器在元组更改时更改(称之为元组更改查询)
阶段 4:运行元组更改查询
请注意,
@inc
仅当元组更改时才会更改!!!阶段 5:将元组更改查询放在子查询中,从元组更改查询中提取所需数据,运行 GROUP BY group_number(称为重复提取查询)
阶段 6:运行重复提取查询
阶段 7:(可选)显示每个 group_number 的计数
阶段 8:(可选)为每个 group_number 运行显示计数查询
第 9 阶段:试一试!!!