我正在hive中处理一个查询。因为我使用了sum和case语句以及groupby子句等聚合。我已经更改了列名和表名,但是我的逻辑与我在项目中使用的相同
select
empname,
empsal,
emphike,
sum(empsal) as tot_sal,
sum(emphike) as tot_hike,
case when tot_sal > 1000 then exp(tot_hike)
else 0
end as manager
from employee
group by
empname,
empsal,
emphike
对于上面的查询,我得到的错误是“expression not in group by key‘1000’”。所以我稍微修改了这个查询,然后再次尝试我的另一个查询是
select
empname,
empsal,
emphike,
sum(empsal) as tot_sal,
sum(emphike) as tot_hike,
case when sum(empsal) > 1000 then exp(sum(emphike))
else 0
end as manager
from employee
group by
empname,
empsal,
emphike
对于上面的查询,其puting me错误为“expression not in group by key‘manager’”。当我在组中添加管理器时,其显示的别名无效。请帮帮我
1条答案
按热度按时间5q4ezhmt1#
我在你的询问中看到三个问题:
1.)配置单元不能按您在select块中定义的变量按您立即指定的名称进行分组。您可能需要一个子查询。
2.)当
sum
或者count
操作不在查询的末尾。3.)虽然我不知道您的目标是什么,但我认为您的查询不会产生预期的结果。如果你分组
empsal
两者之间没有区别empsal
以及sum(empsal)
设计的。同样的道理emphike
以及sum(emphike)
.我认为以下查询可能会解决这些问题:
这个
if
声明等同于您的case
然而,我发现它更容易阅读。在本例中,您不需要在子查询之后按分组,因为分组是在子查询中完成的
a
.