子集和整个集合的情况

时间:2017-02-07 20:21:56

标签: sql hive case impala

我试图计算事务并用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交易的条件第一个的情况下,我得到结果如下:
7交易成功 3笔交易总额(succesfuul +失败)

看起来群组是造成麻烦的原因

1 个答案:

答案 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;

我怀疑你只是拼错了“成功”。