有一个hive表,其中包含如下数据。
select * from table1;
id Amount
1 8.50
1 -8.50
2 3.05
查询数据如下。 SUM不返回预期的输出,即0。
select id, sum(amount) as sum from table1 group by id;
id sum
1 -9.026113190202523E-14
2 3.05
ID的类型为BIGINT。 数量类型:双,列大小:15,小数位数:15
即使这是由于数量列的高精度,它为什么会返回非零值。我也检查了这个表的插入脚本。 INSERT发生在金额列上只有两个小数位。奇怪的是,如果我将数据导出到Excel,并且只有在excel中再次对数据进行排序时,总和才会显示为零。没有排序,总和在excel中显示出类似的科学价值。
表格在AWS HDFS上,我正在使用Hive连接到它。
答案 0 :(得分:0)
尝试一下:
select id, SUM(CAST(Amount AS DECIMAL(9,2))) sum from table1 group by id;
如果这样做不起作用,请尝试将列数据类型从双精度更改为十进制,请确保您添加了精度和小数位数,例如amount decimal(9,2)