我有一个数据库,我使用查询来生成一个像这样的中间表:
id a b
xx 1 2
yy 7 11
我想为具有 < avg(a) 的用户计算 b 的标准偏差
我以这种方式计算 avg(a) 并且效果很好:
select avg(select a from (query to produce intermediate table)) from table;
但是查询:
select stddev_pop(b)
from (query to produce intermediate table)
where a < (select avg(select a
from (query to produce intermediate table))
from table);
返回一个错误,更准确地说,我被告知无法识别来自 avg(select a from...) 的“a”。这让我很困惑,因为它在前面的查询中有效。
如果有人可以提供帮助,我将不胜感激。
编辑:
我将查询结果存储到临时表中,以生成中间表,但仍然遇到同样的问题。非工作查询变为:
select stddev_pop(b) from temp where a < (select avg(a) from temp);
虽然这有效:
select avg(a) from temp;