我可以在内部查询中定义别名并传递给外部查询吗?

Can I define an alias in the inner query and pass on to the outer query?

由于内部查询首先执行,我认为我可以为 table 定义一个别名,如果它与 table 完全相同,则将其传递给外部查询。所以我尝试了下面的方法。

SELECT
  station_id,
  num_bikes_available,
  (SELECT
     AVG(num_bikes_available)
   FROM
     bigquery-public-data.new_yourk.citibike_stations AS stations
  ) AS avg_num_bikes_avlb
FROM
  stations

很遗憾,它无法识别别名 stations有没有办法避免在这种情况下重复输入 table 名称?

没有。做你想做的事情的正确方法是使用 window 函数:

SELECT station_id, num_bikes_available,
       AVG(num_bikes_available) OVER () AS avg_num_bikes_avlb
FROM `bigquery-public-data.new_yourk.citibike_stations` stations;

table 别名表示 table 引用的特定 实例 。它不能用作读取 table 的另一个实例。在任何情况下,相关子查询都是不必要的,而且成本更高。 window 函数是此计算的最佳方法。