分区上的 Hive 嵌套 SUM - 错误表达式不在 GROUP BY 键

问题描述

我正在尝试在一个查询中获得累积总和。它在 sql、PRESTO 等中运行良好,但在 HIVE 中运行良好,这会引发错误消息。

create table test(store varchar(10),item int,quantity int)
insert into test
select 'depot',101,1
union select 'depot',2
union select 'depot',5
union select 'depot',102,3
商店 项目 收入
仓库 101 1
仓库 101 2
仓库 101 5
仓库 102 1
仓库 102 3
select store,item,sum(sum(revenue)) over (partition by store order by item)
from test
group by store,item

预期输出

商店 项目 数量
仓库 101 8
仓库 102 12

错误

[代码:40000,sql 状态:42000] 编译语句时出错: 失败:SemanticException 无法将 Windowing 调用分解为 团体。至少 1 个组必须仅依赖于输入列。还要检查 对于循环依赖。基本错误: org.apache.hadoop.hive.ql.parse.SemanticException:第 1:24 行 表达式不在 GROUP BY 键“收入”中

有什么建议吗?

解决方法

您可以分开查询:

select store,item,sum(sum_revenue) over (partition by store order by item) as revenue
from (
    select store,sum(revenue) as sum_revenue
    from test
    group by store,item
) as t