как найти количество строк таблицы в запросе hive с помощью group by

Вот мой вопрос: у меня есть таблица с некоторыми записями, такими как (имя, дата, тип). Предположим, у меня есть три типа a, b и c.Теперь я хочу подсчитать процент от каждого типа среднее количество (тип) / количество (количество строк таблицы)??

       select type,COUNT(type) as counttype,counttype/(select COUNT(*) from xyz) from xyz group by xyz;

«(выберите COUNT (*) от xyz)» это дает мне ошибку.
Как найти количество строк таблицы?

2 ответа

  1. Вы можете использовать запрос ниже :-

    выберите A. type, A. type_cnt, (A. type_cnt / B. total_cnt) из
    (Выберите type, count (type) as type_cnt из группы xyz по типу)A
    ПРИСОЕДИНЯТЬСЯ
    (выберите count (*) как total_cnt из xyz)B
    На 1=1;

  2. Без JOIN это намного быстрее, используя аналитическую функцию:

    select type,
           count(type) as type_cnt, 
           count(type)/count(*) over() as pct  
      from xyz 
     group by type;