Hive SQL中的嵌套查询
我有一个数据库,并且使用查询来生成一个中间表,如下所示:
id a b xx 1 2
yy 7 11
我想为a <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中的“ a”(选择a from …)。这使我感到非常困惑,因为它可以在上一个查询中使用。
如果有人可以帮助我,我将不胜感激。
编辑:
我将查询结果存储到临时表中以生成中间表,但仍然遇到相同的问题。无法使用的查询变为:
select stddev_pop(b) from temp where a < (select avg(a) from temp);
虽然这有效:
select avg(a) from temp;
回答:
好的,一位同事帮助我做到了。如果有人遇到相同的问题,我将发布答案:
select stddev_pop(b)from temp x
join (select avg(a) as average from temp) y
where x.a < y.average;
基本上,配置单元不会将表作为变量进行缓存。
以上是 Hive SQL中的嵌套查询 的全部内容, 来源链接: utcz.com/qa/399231.html