我在 BigQuery 中有两个表,一个是具有架构的旅程时间表:
- 旅程_id(整数)
- 车辆 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
另一个是距离表,其模式为:
- 车辆 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 且在开始和结束时间戳之间),最终得到一个可以连接到旅程表,看起来像:
- 旅程_id
- 最大距离值
- 最小距离值
您将如何在 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
如果我理解正确的话,这是一个join
and group by
:
select j.journey_id, min(value), max(value)
from journey_times jt join
vehicles v
on jt.vehicle_id = v.vehicle_id and
v.timestamp between jt.start and jt.finish
group by j.journey_id;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)