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

SQL多次左连交易表统计同事营收时SUM结果过大原因排查

问题诊断与解决方案

结果偏大的核心原因

多次左连接同一张交易表产生了笛卡尔积,导致单条交易记录被重复累加:

  • 当某同事ID同时匹配多条交易的code1、code2、code3字段时,三次左连接会将所有符合关联条件的交易做笛卡尔乘积拼接。例如某同事有2条code1匹配的交易、2条code2匹配的交易、2条code3匹配的交易,三次连接后会生成222=8条中间记录,每条原始交易的营收会在求和时被重复计数多次,最终结果远大于实际值。

单查询实现的正确写法

不需要多次关联交易表,将匹配逻辑放到聚合判断层即可,参考代码如下:

SELECT 
    c.Name,
    SUM(CASE WHEN t.code1 = c.ID AND t.RevMth <= 3 THEN t.Rev ELSE 0 END) AS Sum1,
    SUM(CASE WHEN t.code2 = c.ID AND t.RevMth <= 3 THEN t.Rev ELSE 0 END) AS Sum2,
    SUM(CASE WHEN t.code3 = c.ID AND t.RevMth <= 3 THEN t.Rev ELSE 0 END) AS Sum3
FROM Colleagues c
LEFT JOIN Trans t 
    ON c.ID = t.code1 OR c.ID = t.code2 OR c.ID = t.code3
GROUP BY c.Name

该写法会先拉取所有和当前同事任意code字段匹配的交易(每条交易仅出现一次),再按不同code的匹配规则分别求和,完全匹配你的业务逻辑,和Excel SUMIFS的计算结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 23:06:08