HiveQL - 分组计数

HiveQL - Grouping Count

我是新手,在HiveQL方面还面临很多问题,需要向大家请教。我有一个名为 table 的投票 Table,我想计算 "yes" 对 A、B、C、D 的投票(抱歉,我没能 post 图片,所以我将其作为 link 发送。

Vote_table

但在这里我只想将 A1,A2,A3,A4 的计数合并在一起;对于 B,C 仍将单独计算。我期望的输出是

Result_table

我试过的是

select
type,
count(
  case 
          when type = 'A1' and vote = 'yes' then 1
          when type = 'A2' and vote = 'yes' then 1
          when type = 'A3' and vote = 'yes' then 1
          when type = 'A4' and vote = 'yes' then 1
          else vote = 'yes' then 1
)
from vote_table
where …
group by type

我也试过这种方法

if (type in ('A1', 'A2', 'A3', 'A4') and vote = 'yes' then count(*) else (if (vote = 'yes' then count(*)))) as cnt_yes

但两者都不行。所以想请教一下这里的高手,有没有更好的办法呢?谢谢!

按计算类型分组:case when type in ('A1', 'A2', 'A3', 'A4') then 'A' else type end

select
      case when type in ('A1', 'A2', 'A3', 'A4') then 'A' else type end as type,
      sum(case when vote = 'yes' then 1 else 0 end)                     as number_of_vote
 from vote_table
where ...
group by case when type in ('A1', 'A2', 'A3', 'A4') then 'A' else type end