0

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

create table test(store varchar(10), item int, quantity int)
insert into test
select 'depot',101,1
union select 'depot',101,2
union select 'depot',101,5
union select 'depot',102,1
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 无法将窗口调用分解为组。至少 1 个组必须仅依赖于输入列。还要检查循环依赖。潜在错误:org.apache.hadoop.hive.ql.parse.SemanticException: Line 1:24 Expression not in GROUP BY key 'revenue'

有什么建议么 ?

4

1 回答 1

1

您可以分隔查询:

select store, item, sum(sum_revenue) over (partition by store order by item) as revenue
from (
    select store, item, sum(revenue) as sum_revenue
    from test
    group by store, item
) as t
于 2021-05-07T08:09:29.960 回答