我在关注老师的帖子制作临时表时在 BigQuery Sql 中出现错误,它不喜欢括号,我不知道为什么?

I have an error in BigQuery Sql while following teacher's post to make a temp table, it doesn't like the parentheses and I don't know why?

提问人:Tricia Ludwig 提问时间:9/16/2023 最后编辑:marc_sTricia Ludwig 更新时间:10/24/2023 访问量:61

问:

WITH trips_over_1_hr AS 
(
    SELECT *
    FROM
        `bigquery-public-data.new_york_citibike.citibike_trips`
    WHERE 
        tripduration >= 60
)

我按照老师的演示输入了这个,然后得到了这个错误

语法错误:脚本在 [8:2] 意外结束

所以我不知道该怎么办。

我试着删除括号,移动括号,重写整个东西,我不知道还能尝试什么。

sql google-bigquery 语法错误 括号

评论

1赞 marc_s 9/16/2023
好吧 - 你已经用这段代码定义了 CTE - 但没有使用它的声明......类似的东西......SELECT * FROM trips_over_1_hr
0赞 Pratik Patil 9/16/2023
如果您只是打算使用“SELECT * FROM trips_over_1_hr”来修复它,那么您甚至不需要使用 WITH 语句。您可以直接以常规方式查询。
0赞 Tricia Ludwig 9/16/2023
所以基本上老师只是在演示临时表,没有查询让它做任何事情,所以我在这里基本上有一半的命令?

答:

1赞 LearnItDom 9/16/2023 #1

“WITH CTE_Name AS ()”是 CTE。使用 CTE 需要在 () 之后使用 SELECT。只需从CTE_Name添加一个 SELECT。

但是,CTE 的用途是用于准备数据集,您最终将在最终选择中加入或过滤这些数据集。因此,您可以在如下所示的内容中使用它:

WITH CTE_Name AS
(
    SELECT Columns 
    FROM Table1 
    WHERE Column = Criteria
)
SELECT *
FROM Table2 t2
  JOIN CTE_Name CTE on CTE.ColumnX=t2.ColumnX;
0赞 Anthea Carlyn Caro 10/24/2023 #2

我也是数据分析的新手,当我在“)”之后运行“WITH”子句示例时遇到了同样的错误。

我理解这是多么令人困惑。“WITH”子句的视频教程有一个返回结果的演示,所以我也对为什么我得到错误而不是临时表感到困惑。

溶液:

您的说明可能有一个“第 2 部分”,您需要在“)”之后继续。我运行了下面的示例,错误不再出现。


跟 longest_used_bike AS ( 选择 bike_id, SUM(duration_minutes) 作为 trip_duration 从分组依据 bike_id 排序方式 trip_duration DESC 限制 1 )bigquery-public-data.austin_bikeshare.bikeshare_trips

您需要继续执行与以下查询类似的其余查询

选择 Trips.start_station_id, 计数 (*) 作为trip_ct 从 longest_used_bike AS 最长 内部连接 bigquery-public-data.austin_bikeshare.bikeshare_trips AS 行程 开longest.bike_id = trips.bike_id 分组依据 trips.start_station_id 排序方式 trip_ct DESC 限制 1