Рассчитать процент категорий в столбце в Hive - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть таблица, colors в Hive, которая выглядит следующим образом:

 id cname
 1 Blue
 2 Green
 3 Green
 4 Blue
 5 Blue

Мне нужна помощь в написании запроса Hive, который дает процентное содержание каждого цвета в столбце cname.Что-то похожее на это:

Blue  60%
Green 40%

Заранее спасибо!

1 Ответ

0 голосов
/ 23 сентября 2018

Использование функций аналитики:

select cname, concat(pct, ' %') pct
from
(
select (
        count(*) over (partition by cname)/
        count(*) over ()
       )*100 as pct,
       cname
  from (--Replace this subquery with your table
        select stack (5,
                      1, 'Blue',
                      2, 'Green',
                      3, 'Green',
                      4, 'Blue',
                      5, 'Blue' )  as (id, cname)

        ) colors
)s
group by cname, pct;

Результат:

OK
Blue    60.0 %
Green   40.0 %

Просто замените подзапрос colors таблицей

...