2016-09-20 4 views
0

Я хочу найти среднее значение из 3 столбцов, используя запрос куста. Рассмотрим ниже данные: Sample DataСредняя функция в разных столбцах в HIVE

Мне нужно найти средние отметки, набранные каждым учеником, а затем в среднем общей оценки в каждой школе: NULL следует игнорировать.

Мой вывод должен выглядеть следующим образом:

enter image description here

Можете ли вы, ребята, помочь мне здесь

+0

Uh, какой выход вы пытаетесь получить? У вас есть два кандидата. –

+0

Пожалуйста, размещайте данные в форматированном тексте, а не в изображениях; это поможет людям в создании примера для работы. Вы даже можете взглянуть на [MCVE], чтобы улучшить свой вопрос. – Aleksej

+0

Сначала мне нужно найти средние оценки, набранные каждым учеником в каждой школе. Затем мне нужно получить среднее количество баллов в отдельных школах (школа A и школа B) , – Vaishak

ответ

0

Среднее каждого студента:

select school,SL_No,Name,Math,Phy,Chem,(if(Math is NULL,0,Math)+if(Phy is NULL,0,Phy)+if(Chem is NULL,0,Chem))/3 as avg_marks from my_table 

Средние Marks каждой школы

select school,avg(avg_marks) from (select school,SL_No,Name,Math,Phy,Chem,(if(Math is NULL,0,Math)+if(Phy is NULL,0,Phy)+if(Chem is NULL,0,Chem))/3 as avg_marks from my_table 
) temp group by school 
0

Улей должен автоматически игнорировать значения NULL на агрегатах, как сообщается here.

Для удобства чтения, я предлагаю использовать COALESCE вместо IF IS NULL заявления, такие как: COALESCE(Math,0) as Math

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