我有一个数据库,我使用一个查询来生成这样的中间表:
id a b
xx 1 2
yy 7 11
Run Code Online (Sandbox Code Playgroud)
我想为有<avg(a)的用户计算b的标准偏差
我用这种方式计算avg(a)并且它工作正常:
select avg(select a from (query to produce intermediate table)) from table;
Run Code Online (Sandbox Code Playgroud)
但查询:
select stddev_pop(b)
from (query to produce intermediate table)
where a < (select avg(select a
from (query to produce intermediate table))
from table);
Run Code Online (Sandbox Code Playgroud)
返回给我一个错误,更准确地说,我被告知avg中的"a"(从...中选择一个)不被识别.这让我很困惑,因为它适用于上一个查询.
如果有人可以提供帮助,我将不胜感激.
编辑:
我存储了我的查询结果,将中间表生成到临时表中,但仍遇到同样的问题.非工作查询变为:
select stddev_pop(b) from temp where a < (select avg(a) from temp);
Run Code Online (Sandbox Code Playgroud)
虽然这有效:
select avg(a) from temp;
Run Code Online (Sandbox Code Playgroud)
S4M*_*S4M 12
好的,一位同事帮我做了.我会发布答案以防有人遇到同样的问题:
select stddev_pop(b)
from temp x
join (select avg(a) as average from temp) y
where x.a < y.average;
Run Code Online (Sandbox Code Playgroud)
基本上,配置单元不会将表缓存作为变量.
| 归档时间: |
|
| 查看次数: |
24705 次 |
| 最近记录: |