我可以在内部查询中定义别名并传递给外部查询吗?
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 函数是此计算的最佳方法。
由于内部查询首先执行,我认为我可以为 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 函数是此计算的最佳方法。