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

回到顶部