HIVE中不同列的平均函数

Posted

技术标签:

【中文标题】HIVE中不同列的平均函数【英文标题】:Average function on different columns in HIVE 【发布时间】:2016-09-20 11:55:25 【问题描述】:

我想使用 hive 查询找到 3 列的平均值。 考虑以下数据:

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

我的输出应该是这样的:

你们能帮帮我吗

【问题讨论】:

呃,你想得到哪个输出?你有两个候选人。 请以格式化文本而不是图像发布数据;这将帮助人们建立一个可以工作的例子。您甚至可以查看minimal reproducible example 来改进您的问题 首先我需要找到每个学校每个学生的平均成绩。然后我需要获得各个学校(学校 A 和学校 B)的平均成绩。 【参考方案1】:

Hive 应自动忽略 NULL 报告的 here 上的聚合值。

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

【讨论】:

【参考方案2】:

每个学生的平均值:

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中不同列的平均函数的主要内容,如果未能解决你的问题,请参考以下文章

列的平均值会有所不同

基于不同列的具有可变窗口的 Pandas 滚动平均值

如何获得 2 个不同 WHERE 子句的列的平均值?

给定列名,数据框中列的平均值

Google Sheets Column函数使用当前行获取右侧范围内所有列的平均值

用相关列的平均值替换数据框中的 NaN 值的函数