【发布时间】:2021-07-21 07:10:19
【问题描述】:
我有一个关于几个人的动作 (people_movement) 的 SQL 表,如下所示:
| Name | Time | Position Increment (m) |
|---|---|---|
| Brittany | 10.20 | -75 |
| Brittany | 10.30 | 800 |
| Brittany | 10.45 | 800 |
| Brittany | 11.00 | 900 |
| Alan | 10.15 | 400 |
| Alan | 10.16 | -700 |
| Alan | 1020 | 800 |
| Casey | 9.50 | 800 |
| Casey | 10.01 | -400 |
| Casey | 10.05 | 200 |
注意记录了时间,所以对于第一条记录,开始时间是未知的,但是以一行的时间作为下一行的开始时间。 有成千上万的参与者,行数不同,有些参与者有 4 或 5 行,但许多参与者有 100 行。 我需要计算他们的移动速度(米/分钟),所以表格如下所示:
| Name | Start Time | End Time | Position Increment (m) | Increment Speed (m/min) |
|---|---|---|---|---|
| Brittany | - | 10.20 | -75 | - |
| Brittany | 10.20 | 10.30 | 800 | 80 |
| Brittany | 10.30 | 11.45 | 800 | 53.33 |
| Brittany | 10.45 | 11.00 | 900 | 60 |
| Alan | - | 10.15 | 400 | - |
| Alan | 10.15 | 10.16 | -700 | -700 |
| Alan | 10.16 | 10.20 | 800 | 200 |
| Casey | - | 09.50 | 800 | - |
| Casey | 09.50 | 10.01 | -400 | -0.18 |
| Casey | 10.01 | 10.05 | 200 | 50 |
请注意,增量速度只是(位置增量/(开始时间 - 结束时间)),其中结束时间就是每个参与者(姓名)下一次移动的时间。
有没有办法进行这样的计算?
谢谢
【问题讨论】:
-
如果您的 dbms 支持,您可以使用窗口函数
lead/lag。 -
用您正在使用的数据库标记您的问题。
标签: python sql python-3.x performance derivative