Hive表查询给sum函数提供了错误的结果

时间:2017-10-30 17:21:43

标签: amazon-web-services apache-spark hive hdfs

有一个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连接到它。

1 个答案:

答案 0 :(得分:0)

尝试一下:

select id, SUM(CAST(Amount AS DECIMAL(9,2))) sum from table1 group by id;

如果这样做不起作用,请尝试将列数据类型从双精度更改为十进制,请确保您添加了精度和小数位数,例如amount decimal(9,2)

参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-DecimalsdecimalDecimals