回答

收藏

Hive SQL中的嵌套查询

技术问答 技术问答 228 人阅读 | 0 人回复 | 2023-09-14

我有一个数据库,用查询生成中间表,如下所示:/ w9 z" N* J* B! F( W
id    a      b    xx     1       2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          yy              1111我想为a 1 l- X' @- Q! V' {6 H* T2 G
我这样计算avg(a),而且效果很好:
' v+ p$ o% V4 F0 P: bselect avg(select a from (query to produce intermediate table)) from table;但是查询:& N& G# g' b) J% ~* d' Y% a; v3 `
select stddev_pop(b) from (query to produce intermediate table) where a 回到一个错误,更准确地说,我被告知无法识别avg中的“ a”(选择a from …)。这让我很困惑,因为它可以用在上一个查询中。
( K- o0 G& |3 V8 r! }4 j如果有人能帮助我,我很感激的。* B/ y& m2 {1 d4 s8 b% f- P! ^% z$ }
编辑:- m/ J6 I2 W# x' A+ e
我将查询结果存储在临时表中生成中间表,但仍然存在同样的问题。不能使用的查询变为:0 L8 E& X8 h7 \: n
select stddev_pop(b) from temp where a 尽管如此:& I0 }0 a/ n# H, ]/ W
select avg(a) from temp;                : ]$ `/ a: h3 u# B) T: d! E
    解决方案:                                                                " i: s' K: R4 n. g7 J
                                                                一位同事帮我做到了。如果有人遇到同样的问题,我会回答:
! `0 \& T& Y& Lselect stddev_pop(b)from temp xjoin (select avg(a) as average from temp) ywhere x.a 配置单元基本上不会缓存表作为变量。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则