我试图计算事务并用Hive中的case语句标记它们。
select case
When PROTOCOLID = 61002 AND TRANS_TYPE = "succesfull" THEN "X"
When PROTOCOLID = 61002 AND (TRANS_TYPE ="succesfull" or TRANS_TYPE ="failed") THEN "Y"
end as name, sum(count)
from tab1
group by name
但到目前为止,似乎只有更广泛的(succesfull + failed)when语句返回结果,而未返回成功事务的结果。
编辑:我越是处理查询,它似乎总是返回我放在第一位的条件。所以假设我总共有 10个交易并且在SUCCESS交易的条件第一个的情况下,我得到结果如下:看起来群组是造成麻烦的原因
答案 0 :(得分:0)
嗯。我会使用以下方式获取此信息:
select count(*) as cnt_total,
sum(case when trans_type = 'successful' then 1 else 0 end) as cnt_success
from tab1
where trans_type in ('succesful', 'failed') and
protocolid = 61002;
我怀疑你只是拼错了“成功”。