【发布时间】:2021-07-06 21:55:15
【问题描述】:
我想确定当对象位于重复位置时在该位置所花费的时间。有什么想法可以在两天内使用三个 ObjectID 从这个数据样本中推导出来吗?谢谢
| ObjectID | DateTime | Lat | Lon |
|---|---|---|---|
| 23 | 5/2/2021 12:00 | 40.11 | -30.34 |
| 23 | 5/2/2021 16:00 | 40.11 | -30.34 |
| 23 | 5/2/2021 23:00 | 40.11 | -30.34 |
| 23 | 5/3/2021 12:00 | 40.11 | -30.34 |
| 23 | 5/3/2021 16:00 | 39.88 | -29.00 |
| 23 | 5/3/2021 23:00 | 40.11 | -30.34 |
| 24 | 5/2/2021 12:00 | 40.11 | -30.34 |
| 24 | 5/2/2021 16:00 | 40.11 | -30.34 |
| 24 | 5/2/2021 23:00 | 39.88 | -29.00 |
| 24 | 5/3/2021 12:00 | 39.88 | -29.00 |
| 24 | 5/3/2021 16:00 | 40.11 | -30.34 |
| 24 | 5/3/2021 23:00 | 39.88 | -29.00 |
| 25 | 5/2/2021 12:00 | 40.11 | -30.34 |
| 25 | 5/2/2021 16:00 | 39.88 | -29.00 |
| 25 | 5/2/2021 23:00 | 40.11 | -30.34 |
| 25 | 5/3/2021 12:00 | 39.88 | -29.00 |
| 25 | 5/3/2021 16:00 | 40.11 | -30.34 |
| 25 | 5/3/2021 23:00 | 40.11 | -30.34 |
Desired Output 应该是 ObjectID、位置中最早的 DateTime 以及该位置中的时间:
| ObjectID | StartingDateTime | Lat | Lon | TimeInLocation |
|---|---|---|---|---|
| 23 | 5/2/2021 12:00 | 40.11 | -30.34 | 24:00:00 |
| 24 | 5/2/2021 12:00 | 40.11 | -30.34 | 04:00:00 |
| 24 | 5/2/2021 23:00 | 39.88 | -29.00 | 13:00:00 |
| 25 | 5/3/2021 16:00 | 40.11 | -30.34 | 07:00:00 |
ObjectID 23 从 5/2 12:00-5/3 12:00 在同一位置,因此返回一行显示 24 小时
ObjectID 24 在同一位置两次:
-
5/2 12:00-5/2 16:00,所以返回一行显示4小时
-
5/2 23:00-5/3 12:00,因此返回另一行显示 13 小时
ObjectID 25 从 5/3 16:00-5/3 23:00 在同一位置,因此返回一行显示 7 小时
【问题讨论】:
-
我迷路了。在 2021 年 5 月 3 日 12:00 和 2021 年 5 月 3 日 16:00 之间以及 2021 年 5 月 3 日 16:00 和 2021 年 5 月 3 日 23:00 之间,物体 23 在哪里?
-
@GordonLinoff :数据是在随机时间收集的,而不是在到达或离开时。因此,我们不知道对象 23 在 5/3 12:00 和 5/3 16:00 之间的位置。我们可以假设它在我们想要计算 TimeInLocation 的位置花费了一些时间,并且在旅行中花费了一些时间,但数据并未证实这一点。我的真实数据通常会反映旅行中的多个 LAT/LON 位置。我没有在示例中显示减少行数,以试图使数据更易于理解。谢谢!
标签: sql location snowflake-cloud-data-platform latitude-longitude