在使用ShardingSphere分组聚合时是,出现了数据汇总不正确问题。我这里只进行了分表,未进行分库。使用的是广播查询,因为是定时任务统计,无法使用到分片键。进行分组的字段是两个
1、 SQL查询列,不要使用【IFNULL(sum(xxx),0))】 直接采用【sum(xxx)】方式。 -- 应该是版本问题,目前不了解是否修复了。不支持 IFNULL ?
2、如果去除了【IFNULL】还是不行,那么可以使用一个融合方法。使用【concat】函数,将多个分组字段合并进行统计,这样【ShardingSphere】在进行【分组归并】时,可以很好的进行聚合。看看是否可以解决:
SQL SELECT concat(upp.type,'_', IFNULL(p.tag,'')) as channelIdProductLoanTag, sum(upp.loan_amount) as loanAmount FROM tb1 upp -- 分片表 left join x2 p on upp.product_id = p.id -- 非分表表 WHERE upp.state = 7 group by channelIdProductLoanTag order by channelIdProductLoanTag