HiveQL-分组计数

HiveQL-分组计数,hive,count,grouping,hiveql,Hive,Count,Grouping,Hiveql,我是一个新手,在HiveQL中仍然面临很多问题,需要咨询大家。我有一个名为Vote table的表,我想计算a、B、C、d的“是”票(很抱歉,我无法发布图像,所以我将其作为链接发送) 但这里我只想把A1,A2,A3,A4的计数加在一起;对于B,C仍将单独计算。我期望的结果是 我试过的是 select type, count( case when type = 'A1' and vote = 'yes' then 1 when type = 'A2

我是一个新手,在HiveQL中仍然面临很多问题,需要咨询大家。我有一个名为Vote table的表,我想计算a、B、C、d的“是”票(很抱歉,我无法发布图像,所以我将其作为链接发送)

但这里我只想把A1,A2,A3,A4的计数加在一起;对于B,C仍将单独计算。我期望的结果是

我试过的是

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

但两者都不起作用。所以,我想咨询一下这里的专家,有没有更好的方法?谢谢

按计算类型分组:
输入('A1','A2','A3','A4')然后输入'A'其他类型结束时的情况

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

你好谢谢你的回复,我正在尝试你的解决方案,等待结果,希望它能为我工作!顺便说一句,我有一些小问题:1。如果在“case-when”子句中我不使用“else 0”部分,会影响结果吗?2.如果‘sum’改为‘count’,结果是一样的,对吗?抱歉,这些问题可能很愚蠢,但我只是想好好掌握基本知识,因为我还在学习~Thanksss~~@Claire CASE将在CASE vote中返回NULL!='“是”和“计数”将仅计数而不是空值。如果所有投票结果均为“否”,则计票结果将为空。您可能希望使用NVL等将结果NULL转换为0。不过对于您的精确数据集来说,它可以很好地工作。啊!我懂了!非常感谢你的解释!请不要在问题标题中添加“已解决”。简单地将答案标记为解决方案就足够了。@NikosC。你好,尼科斯!好的,明白了!谢谢你的反馈!