如何在 BigQuery 中过滤多个条件?

How to filter multiple conditions in BigQuery?

我想用 2 个条件过滤我的 table:

  1. ride_length 必须大于 31
  2. 对于start_station_name和end_station_name相同的行程,ride_length必须大于60

我尝试使用如下子查询查询代码:

SELECT 
TIMESTAMP_DIFF(ended_at,started_at,SECOND) AS ride_length,
start_station_name,
end_station_name
FROM
divvy_stations_trips.all_trips 
WHERE 
TIMESTAMP_DIFF(ended_at,started_at,SECOND) > 31 AND
(SELLECT
 TIMESTAMP_DIFF(ended_at,started_at,SECOND)
 FROM 
 divvy_stations_trips.all_trips
 WHERE 
 TIMESTAMP_DIFF(ended_at,started_at,SECOND)>60 AND
 start_station_name = end_station_name 
 )     

我收到此错误:语法错误:带括号的表达式无法解析为 [10:9]

处的表达式、结构构造函数或子查询

我的子查询好像有问题?如果有人能提供帮助,我们将不胜感激!

提前致谢!

您创建的子查询不能在 WHERE 子句中使用。

一种方法是使用 UNION 合并两组结果。

这应该有效:

(SELECT 
TIMESTAMP_DIFF(ended_at,started_at,SECOND) AS ride_length,
start_station_name,
end_station_name
FROM
divvy_stations_trips.all_trips 
WHERE 
TIMESTAMP_DIFF(ended_at,started_at,SECOND) > 31 AND 
start_station_name != end_station_name)

UNION ALL

(SELECT 
TIMESTAMP_DIFF(ended_at,started_at,SECOND) AS ride_length,
start_station_name,
end_station_name
FROM
divvy_stations_trips.all_trips 
WHERE 
TIMESTAMP_DIFF(ended_at,started_at,SECOND) > 60 AND 
start_station_name = end_station_name)