首页 > 解决方案 > 子查询中的 Group by 范围错误

问题描述

我正在使用 hive 1.1.0 ,发现这样一个令人困惑的错误。我想知道这是什么问题以及下次如何解释这种问题。

我遇到了这个问题,

FAILED: SemanticException [Error 10025]: Line 2:8 Expression not in GROUP BY key 'item_id'

使用时

    select 
        item_id,
        buy_num_sum_I_7days/sum(buy_num_sum_I_7days) item_buy_probability
    FROM
    (
        select 
            item_id,
            max(buy_num_sum_I_7days) buy_num_sum_I_7days
        FROM
            mytable
        where
            dt>=20210206 and dt<=20210208
        group BY
            item_id
    )tt;

标签: hive

解决方案


您需要给一个空窗口,sum因为它是一个聚合函数:

select 
    item_id,
    buy_num_sum_I_7days/(sum(buy_num_sum_I_7days) over ()) item_buy_probability
FROM
(
    select 
        item_id,
        max(buy_num_sum_I_7days) buy_num_sum_I_7days
    FROM
        mytable
    where
        dt>=20210206 and dt<=20210208
    group BY
        item_id
)tt;

推荐阅读