Sql Bigquery错误代码:按表达式排序的窗口引用的列“开始日期”,该列在

Sql Bigquery错误代码:按表达式排序的窗口引用的列“开始日期”,该列在,sql,google-bigquery,Sql,Google Bigquery,我正在使用BigQuery for SQL,我不明白为什么会出现这样的错误消息: Window ORDER BY expression references column start_date which is neither grouped nor aggregated at [4:73] 这是我的密码: SELECT EXTRACT(WEEK FROM start_date) as week, count(start_date) as count, RANK() OVER (PARTITI

我正在使用BigQuery for SQL,我不明白为什么会出现这样的错误消息:

Window ORDER BY expression references column start_date which is neither grouped nor aggregated at [4:73]
这是我的密码:

SELECT EXTRACT(WEEK FROM start_date) as week, count(start_date) as count,
RANK() OVER (PARTITION BY start_station_name ORDER BY EXTRACT(WEEK FROM start_date))
from `bigquery-public-data.london_bicycles.cycle_hire`
GROUP BY EXTRACT(WEEK FROM start_date), start_station_name)

如最后一行所示,我想我已经在下面一周进行了分组。那么,是什么原因导致此错误消息不断弹出呢?

请使用cte尝试下面的方法

  with cte as
    (
    SELECT *, EXTRACT(WEEK FROM start_date) as week

    from `bigquery-public-data.london_bicycles.cycle_hire`

    ) select week,count(start_date) as count,
     RANK() OVER (PARTITION BY start_station_name ORDER BY week)
     from cte group by week,start_station_name

使用cte尝试下面的方法

  with cte as
    (
    SELECT *, EXTRACT(WEEK FROM start_date) as week

    from `bigquery-public-data.london_bicycles.cycle_hire`

    ) select week,count(start_date) as count,
     RANK() OVER (PARTITION BY start_station_name ORDER BY week)
     from cte group by week,start_station_name

这是BigQuery中的一个解析错误,您可以使用聚合函数来解决。您的查询还存在另一个问题,即
开始站\u名称

SELECT EXTRACT(WEEK FROM start_date) as week, start_station_name, count(start_date) as count,
       RANK() OVER (PARTITION BY start_station_name ORDER BY MIN(EXTRACT(WEEK FROM start_date)))
from `bigquery-public-data.london_bicycles.cycle_hire`
GROUP BY 1, 2;
MIN()。由于表达式是<>代码>组的的一部分,所以只考虑一个值:<代码> min()/<代码>。


这是BigQuery解析中的一个错误,因为它无法识别表达式与
GROUP BY
中的表达式相同。幸运的是,这很容易解决。

这是BigQuery中的一个解析错误,您可以使用聚合函数来解决。您的查询还存在另一个问题,即
开始站\u名称

SELECT EXTRACT(WEEK FROM start_date) as week, start_station_name, count(start_date) as count,
       RANK() OVER (PARTITION BY start_station_name ORDER BY MIN(EXTRACT(WEEK FROM start_date)))
from `bigquery-public-data.london_bicycles.cycle_hire`
GROUP BY 1, 2;
MIN()。由于表达式是<>代码>组的的一部分,所以只考虑一个值:<代码> min()/<代码>。


这是BigQuery解析中的一个错误,因为它无法识别表达式与
GROUP BY
中的表达式相同。令人高兴的是,这很容易解决。

在查询中,您需要确保您只需对所选的值进行排序


对于您的查询,问题是您正在按提取顺序进行排序(从开始日期算起的一周)。您不应该这样做,而是应该按周编写订单,因为您在查询中已经选择了周,您需要确保您必须仅对所选择的值进行排序


对于您的查询,问题是您正在按提取顺序进行排序(从开始日期算起的一周)。您不应该这样做,而是应该按周编写订单,因为您已经选择了周

您粘贴的查询不应该生成此错误。您确定这是您实际运行的代码吗?@Tim,是的,这是我运行的代码。您粘贴的查询不应该生成此错误。你确定这是你实际运行的代码吗?@Tim,是的,这就是我运行的代码。order by(min(…)的逻辑是什么?哦,谢谢你的帮助,我稍后会试试。orderby(min(…)的逻辑是什么?哦,谢谢你的帮助,我以后再试试。