首页 > 解决方案 > 我可以在内部查询中定义别名并传递给外部查询吗?

问题描述

由于内部查询首先执行,我想我可以为表定义一个别名,如果它是同一个表,则将其传递给外部查询。所以我尝试了以下。

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在这种情况下,有没有办法避免重复输入表名?

标签: sqlgoogle-bigqueryalias

解决方案


不,做你想做的事的正确方法是使用窗口函数:

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;

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


推荐阅读