HIVE 中不同列的平均函数

Average function on different columns in HIVE

我想使用配置单元查询求出 3 列的平均值。 考虑以下数据:

我需要求出每个学生的平均分,然后求出每所学校总分的平均值: NULL 应该被忽略。

我的输出应该是这样的:

你们能帮帮我吗

每个学生的平均值:

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

每所学校的平均分

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

Hive 应自动忽略聚合上的 NULL 值,如报告的那样 here

为了可读性,我建议使用 COALESCE 而不是 IF IS NULL 语句,例如:COALESCE(Math,0) as Math