TiDB和Greenplum查询结果不一致

【TiDB 版本】:v4.0.0

【问题描述】:在使用TPC-H对TiDB和Greenplum进行对比实验时。我首先将数据导入到TiDB,然后使用同步工具将数据同步到Greenplum。对两个数据库中的表的记录数都进行了检查,表中记录数一致。发现两个数据很多查询语句的结果不一致。然后我使用AVG函数对每张表的数值列进行了统计。
以下是对比结果
Customer表
查询语句:select max(C_ACCTBAL),avg(C_ACCTBAL),min(C_ACCTBAL) from CUSTOMER;
TiDB
image
Greenplum
image

Lineitem表
查询语句:select max(L_QUANTITY),avg(L_QUANTITY),min(L_QUANTITY) from LINEITEM;
TiDB
image
Greenplum
image
能解释一下为什么出现差异吗,是两种数据库的AVG函数的实现逻辑不一样吗,还是仅仅是数值的精确度引起的

请确认下 C_ACCTBAL 这些列的数据类型 如果是 Float/Double 类型,是有可能有以上问题的。
这是因为 ,TiDB/MySQL 针对 以上数据类型 的精度控制并不是绝对精确的,是一个近似值。
可以尝试将数据格式改为 DECIMAL 再测试

https://docs.pingcap.com/zh/tidb/stable/data-type-numeric#float-类型

谢谢,目前我们现在定位的TPCH查询结果不一致的问题,可能是同步工具在同步数据时出现了问题(出现部分重复数据)

:ok_hand:

不过从 查询结果上来看 相关的数据精度确实不一样。所以这里也请您注意下