You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LEFT JOIN关联多表查询时sum求和结果不正确问题求解

问题分析与解决方法

错误根源

计算偏差是左连接产生笛卡尔积重复计数导致的:当teams_users中同一个团队存在N个用户,summary_coins中同一个团队存在M条金币记录时,左连接后会生成N*M条关联数据,此时对get_count求和会把每条金币记录重复计算N次。你遇到的team_id=3总用户10、实际总金币30的场景,求和结果就是30 * 10 = 300,和反馈的错误结果完全吻合。

解决方案

先分别对两张表按team_id分组聚合得到单团队维度的统计结果,再做关联即可避免重复计数:

SELECT 
    t.team_id,
    t.total_user,
    IFNULL(c.total_get_count, 0) AS get_count
FROM 
    -- 先统计每个团队的总用户数
    (SELECT team_id, COUNT(user_id) AS total_user FROM teams_users GROUP BY team_id) t
LEFT JOIN 
    -- 再统计每个团队的总金币数
    (SELECT team_id, SUM(get_count) AS total_get_count FROM summary_coins GROUP BY team_id) c
ON t.team_id = c.team_id
ORDER BY get_count DESC, team_id ASC

效果验证

用你提供的样例数据执行上述SQL,输出结果完全符合预期:

team_idtotal_userget_count
2115
120

内容的提问来源于stack exchange,提问作者Niloy Rony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 21:21:01