HiveQL - счетчик групп - PullRequest
       22

HiveQL - счетчик групп

2 голосов
/ 01 марта 2020

Я новичок ie здесь и все еще сталкиваюсь с множеством проблем в HiveQL, нужно проконсультироваться со всеми вами. У меня есть таблица с именем «Таблица голосования», и я хочу посчитать «да» за A, B, C, D (извините, я не смог опубликовать изображение, поэтому вместо этого я отправил его как ссылку ).

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

Но оба не работают. Итак, я хотел бы проконсультироваться с экспертами здесь, есть ли лучший способ сделать это? Спасибо!

1 Ответ

0 голосов
/ 01 марта 2020

Группировка по типу расчета: 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
...