有一个包含如下数据的配置单元表。
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上,我正在使用配置单元连接到它。
1条答案
按热度按时间ffx8fchx1#
试试这个:
如果不起作用,请尝试将列数据类型从double更改为decimal,确保添加精度和小数位数。
amount decimal(9,2)
参考文献:https://cwiki.apache.org/confluence/display/hive/languagemanual+types#languagemanualtypes-小数小数