2017-06-12 136 views
0

我的数据是这样的:如何从一个AS列平均在SELECT语句

DATE Ticker us_cls_price cls_prc 

    05/23 APPL  $400  $401 
    05/24 IBM  $100  $105 
    05/25 AMAZ  $350  $355 

我使用这个select语句:

SELECT 
    date,ticker,us_cls_price,cls_price,cls_prc-us_cls_price AS prc_diff ... 

我试图获得平均的prc_diff列。

....AS prc_diff, AVG(prc_diff) ... 

但是,我不断收到一个错误,它说prc_diff是无效的。

有没有办法调用由AS创建的列?

回答

1

当使用别名时,它只能用于在查询(或子查询,视情况而定)之外引用。在该查询中,您必须完全重复表达式,例如

SELECT ... us_cls_price AS prc_diff, avg(us_cls_price) as avg_us_cls_price ... 

如果你不想重复表达,你必须使用,而不是一个子查询:

SELECT ... prc_diff, avg(prc_diff) as avg_us_cls_price ... 
FROM (SELECT ... us_cls_price as prc_diff ...)