【发布时间】:2018-11-14 03:17:10
【问题描述】:
我在 BigQuery 中有两个表,一个是带有架构的 Journey_times 表:
- journey_id (int)
- vehicle_id(字符串)
- 开始(时间戳 yyyy-mm-dd hh:mm:ss)
- 完成(时间戳 yyyy-mm-dd hh:mm:ss)
样本数据:
- journey_id¦ vehicle¦ start¦ finish
- 1¦ car1¦ 2017-12-05 01:33:44 UTC¦ 2017-12-05 01:53:14 UTC
- 2¦ car2¦ 2017-12-05 03:04:18 UTC¦ 2017-12-05 03:28:49 UTC
另一个是距离表,其架构为:
- vehicle_id(字符串)
- 时间戳(时间戳 yyyy-mm-dd hh:mm:ss)
- 值(浮点数)
样本数据:
- vehicle¦ timestamp¦ value
- car3¦ 2016-08-30 17:36:52 UTC¦ 0.01635375
- car3¦ 2016-08-30 17:36:53 UTC¦ 0.02862375
我想要做的是查询距离表并找到旅程时间表中每个旅程行的最大值和最小值(具有相同的车辆 ID 并且在开始和结束时间戳之间)以得到一个表可以加入到旅程表中,如下所示:
- journey_id
- 最大距离值
- min_distance_value
您将如何在 BigQuery 标准或旧版 SQL 中编写此代码?
我在下面的尝试没有产生任何结果。
`
WITH
distance_table AS (
SELECT
vehicle,
timestamp,
value
FROM
'project.trip_distance' ),
journey_table AS (
SELECT
journey_id,
vehicle,
start,
finish
FROM
'project.journey_times')
SELECT
MIN(distance_table.value)
FROM
distance_table JOIN journey_table
using (vehicle)
WHERE
distance_table.vehicle = journey_table.vehicle
AND distance_table.timestamp BETWEEN journey_table.start
AND journey_table.finish
【问题讨论】:
-
到目前为止你尝试过什么?请编辑您的问题以显示您遇到问题的代码的Minimal, Complete, and Verifiable example,然后我们可以尝试帮助解决具体问题。你也可以阅读How to Ask。顺便说一句,像现在这样回答像你这样的问题 - 在 SO 上被认为是一个非常糟糕的品味,所以请考虑更新它并在提问之前展示一些解决它的努力
-
样本数据和期望的结果真的很有帮助。
-
抱歉,@MikhailBerlyant,感谢您提供的链接。我曾经(错误地)认为我之前的尝试是离谱的,不会有太大用处。尽我所能清晰地格式化示例值。 Gordon Linoff 代码正是我要找的,我只是把问题复杂化了。我的提交仍然低于标准吗?
标签: sql google-bigquery