配置单元表查询为sum函数提供了不正确的结果

zd287kbt  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(426)

有一个包含如下数据的配置单元表。

select * from table1;

    id        Amount
    1         8.50
    1         -8.50
    2         3.05

查询数据如下。总和没有返回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
即使这是由于amount列的高精度,为什么它会返回一个非零值。我也检查了这个表的插入脚本。插入操作在amount列中只有两位小数。奇怪的是,如果我将数据导出到excel,并且只有在excel中再次对数据排序时,总和才会显示为零。在excel中,如果不进行排序,总和显示出类似的科学值。
表在aws hdfs上,我正在使用配置单元连接到它。

ffx8fchx

ffx8fchx1#

试试这个:

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

如果不起作用,请尝试将列数据类型从double更改为decimal,确保添加精度和小数位数。 amount decimal(9,2) 参考文献:https://cwiki.apache.org/confluence/display/hive/languagemanual+types#languagemanualtypes-小数小数

相关问题