У меня есть две таблицы в BigQuery, одна из них представляет собой таблицу trip_times со схемой:
- trip_id (int)
- vehicle_id (строка)
- start (метка времени гггг-мм-дд чч: мм: сс)
- окончание (метка времени гггг-мм-дд чч: мм: сс)
Пример данных:
- 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 (строка)
- метка времени (метка времени гггг-мм-дд чч:мм: сс)
- значение (с плавающей точкой)
Пример данных:
- vehicle¦ timestamp¦ value
- car3¦ 2016-08-30 17:36:52 UTC¦ 0.01635375
- car3¦ 2016-08-30 17:36:53 UTC¦ 0.02862375
Что я хочу сделать, это запросить расстояниев таблице и найдите максимальное и минимальное значение для каждой из строк поездки в таблице trip_times (с одним и тем же идентификатором транспортного средства и между отметками времени начала и окончания), чтобы в итоге получилась таблица, которую можно объединить с таблицей путешествий, и выглядеть следующим образом:
- trip_id
- max_distance_value
- 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