2016-09-20 1 views
0

Je veux trouver la moyenne de 3 colonnes en utilisant la requête Hive. Considérons les données ci-dessous: Sample DataFonction moyenne sur différentes colonnes dans HIVE

Je dois trouver la moyenne des notes marqués par chaque élève, puis la moyenne des notes totales dans chaque école: NULL doit être ignorée.

Ma sortie devrait ressembler à ceci:

enter image description here

Pouvez-vous les gars me aider

+0

Euh, dont la sortie vous essayez d'obtenir? Vous avez deux candidats. –

+0

Veuillez poster vos données en texte formaté, pas en images; cela aidera les gens à construire un exemple sur lequel travailler. Vous pouvez même jeter un coup d'œil à [MCVE] pour améliorer votre question. – Aleksej

+0

Je dois d'abord trouver les notes moyennes obtenues par chaque élève dans chaque école. Ensuite, je dois obtenir la moyenne des notes dans chaque école (école A et école B) . – Vaishak

Répondre

0

moyenne de chaque élève:

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 

Marques moyennes de chaque école

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

Hive doit automatiquement ignorer les valeurs NULL sur les agrégats tels que déclarés here.

Pour faciliter la lecture, je suggère d'utiliser COALESCE au lieu de IF IS NULL déclarations telles que: COALESCE(Math,0) as Math