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

多表关联聚合异常:SUM函数未按日期和零售名称分组统计

关联表SUM聚合未按日期和零售名称拆分的问题

我在关联两张表并使用SUM函数时遇到问题:聚合结果返回全周期的总营收,并未按关联表中的Date和Retailname字段拆分统计。我期望得到按日期和零售名称划分的各门店营收,尝试过在SELECT子句中使用相关子查询,但结果仍相同。

当前使用的SQL语句

Select Date, Retailname, sum(Revenue) 
From table1 t1 
Join table2 t2 
On t1.primarykey = t2.primarykey 
Group by Date, Retailname 

当前查询结果

Date    Retailname    Revenue  
X       Name1         224
X       Name2         224 
X       Name3         224 
X       Name4         224 

期望得到的结果

Date    Retailname    Revenue  
X       Name1         25 
X       Name2         75 
X       Name3         96 
X       Name4         28 

可能的原因及解决办法

  • 关联导致数据重复计算:如果两张表是一对多关联(比如一条主表记录对应多条从表记录),关联后会生成重复行,SUM时会把重复的Revenue累加多次,最终得到总营收而非单门店数据。解决思路是先对Revenue所在的表做聚合,再关联另一张表:
    假设Revenue存储在table1中:
    Select t2.Date, t2.Retailname, t1.total_revenue
    From (
        Select primarykey, sum(Revenue) as total_revenue
        From table1
        Group by primarykey
    ) t1
    Join table2 t2 On t1.primarykey = t2.primarykey
    Group by t2.Date, t2.Retailname
    
    若Revenue存储在table2中:
    Select t1.Date, t1.Retailname, t2.total_revenue
    From table1 t1
    Join (
        Select primarykey, sum(Revenue) as total_revenue
        From table2
        Group by primarykey
    ) t2 On t1.primarykey = t2.primarykey
    Group by t1.Date, t1.Retailname
    
  • 分组字段存在异常:检查Date和Retailname字段的来源,若两张表都有同名字段,需明确指定表别名(比如t1.Date或t2.Date),避免取到错误字段导致分组失效。另外当前结果里的X.可能是Date字段存在格式差异(比如多余的点或空格),也会影响分组逻辑。
  • 原始表存在重复主键:检查table1或table2中是否有重复的primarykey记录,导致关联后数据被多次统计。可以执行SELECT primarykey, COUNT(*) FROM table1 GROUP BY primarykey HAVING COUNT(*) > 1(或替换为table2)排查重复数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:05:24