来自 Hive 中列总和的 MAX 值

Posted

技术标签:

【中文标题】来自 Hive 中列总和的 MAX 值【英文标题】:MAX value from the sum of columns in Hive 【发布时间】:2017-06-21 17:53:39 【问题描述】:

我是 Hive 新手,遇到了一个相当简单的问题。我的数据如下:

Name---Day---Doctor Bill--- Room Bill

Rakesh  1   2500    1500

Raja    1   5000    2300

Raju    1   4500    2000

Rakesh  2   3750    2250

Rakesh  3   3550    1750

Raja    2   4500    4000

Raju    2   3450    4725

要找出谁支付的总医生费用最高?

查询:

hive> insert overwrite table maxdrbill select t.name,sum(t.drbill) as totaldrbill from patient t join (select name from patient group by name order by sum(drbill) desc LIMIT 1) t1 on t.name=t1.name GROUP by t.name;

当我在 hive 中运行以下查询时,我收到以下错误:

FAILED:语义分析错误:第 1:149 行无效的表别名或 列引用 drbill

【问题讨论】:

您总共有 5 列,但每行只有 4 列数据? 【参考方案1】:

查询

select name,SUM(doctorbill) as s from bills GROUP BY name ORDER BY s DESC LIMIT 1;

输出

Rakesh  9800

希望对你有帮助!

【讨论】:

【参考方案2】:

性能方面,我相信这会更好,因为不需要对数据进行整理以获得最大值。

求和后得到最大值: SELECT t1.Name, MAX(TotalDrBill) FROM (SELECT t.Name, SUM(t.drbill) as TotalDrBill FROM Patient t GROUP BY t.Name) t1

【讨论】:

以上是关于来自 Hive 中列总和的 MAX 值的主要内容,如果未能解决你的问题,请参考以下文章

SQL 计算基于 Hive 列中先前值重置的累积总和

hive on hbase中列族的列名不固定

HIVE 数据透视和总和/计数

Hive 查询以使用其他列值的总和获取前 3 列值

Hive创建外部表CSV数据中列含有逗号问题处理

MAX中的NULL,HIVE中的MIN函数