您好我在源表“状态表”下面
date status name
2017-06-22 true 1.tar
2017-06-22 true 2.tar
2017-06-22 false 3.tar
2017-06-22 true 4.tar
2017-06-22 false 5.tar
2017-06-21 false 6.tar
2017-06-21 false 6.tar
2017-06-21 false 6.tar
2017-06-21 true 6.tar
我在目标表列下面有预期数据
True False Total Date
3 2 5 2017-06-22
1 3 4 2017-06-21
我在下面写了一个查询来将数据从源表加载到目标表,但它说
Expression not in GROUP BY key
SET hive.exec.dynamic.partition.mode=nonstrict;
SET hive.auto.convert.join=true;
INSERT OVERWRITE TABLE destination PARTITION(date_time)
SELECT
count(status=true) AS success,
count(status=false) AS fail,
success + fail
FROM
status;
请帮我找到缺失的链接。提前致谢。
答案 0 :(得分:1)
success + fail
)COUNT
计算非NULL的所有内容。 FALSE不是NULL。Date
是保留字。使用`Date`甚至更好,找到另一个名字。Date
分组。select count (case when status = true then 1 end) as success
,count (case when status = false then 1 end) as fail
,count (status) as total
,`date`
from status
group by `date`
答案 1 :(得分:0)
感谢您的回答,但是我发现了我的错误,我使用的是count函数而不是sum。这是下面的代码。
SELECT
sum(case when status ='true' then 1 else 0 end),
sum(case when status ='false' then 1 else 0 end),
sum(case when status ='true' then 1 else 0 end) + sum(case when status='false' then 1 else 0 end)
from status where date='2017-06-21';