2016-12-05 8 views
4

Недавно я пытался узнать улей, и у меня проблема с sql consult. У меня есть json-файл с некоторой информацией. Я хочу получить среднее значение для каждого регистра. Лучше в примере:Hive sql: count и avg

country times 
USA  1 
USA  1 
USA  1 
ES  1 
ES  1 
ENG  1 
FR  1 

затем рядом советоваться:

select country, count(*) from data; 

я получаю:

country times 
USA  3 
ES   2 
ENG  1 
FR   1 

тогда я должен получить следующий из:

country avg 
USA  0,42 (3/7) 
ES  0,28 (2/7) 
ENG  0,14 (1/7) 
FR  0,14 (1/7) 

Я не» я знаю, как я могу получить это от первого t возможность.

Я пробовал:

select t1.country, avg(t1.tm), 
from (
    select country,count(*)as tm from data where not country is null group by country 
) t1 
group by t1.country; 

но мой выход неправильно.

Спасибо за помощь! BR.

ответ

0

Разделите количество каждой группы на общее количество, чтобы получить результат. Используйте Sub-Query, чтобы найти общее количество записей в таблице

Попробуйте

select t1.country, count(*)/IFNULL((select cast(count(*) as float) from data),0) 
from data 
group by t1.country; 

 Смежные вопросы

  • Нет связанных вопросов^_^