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

SQL销售交易统计:如何修正多表关联后的交易总数统计结果?

解决交易总数统计不符预期的问题

嘿,我来帮你搞定这个统计问题!

问题原因

你当前查询得到totaltransaction=3,是因为Sales Detail表中同一个交易(比如TR01)有多条记录,当三张表关联后,Sales Header里的TR01会被重复匹配两次(对应Detail的两条数据),导致count(salesheader.memberid)把这两次重复的记录都算进去了,而实际你需要统计的是唯一的交易数量。

解决方案1:使用DISTINCT统计唯一交易ID

最简单的修正方式是在count里加上distinct,只统计不重复的transaction_id,这样就能得到实际的交易总数:

select member.name as staffname, 
       count(distinct salesheader.transaction_id) as totaltransaction, 
       sum(salesdetail.qty) as totalqty
from member 
inner join salesheader on member.memberid = salesheader.memberid 
inner join salesdetail on salesheader.transaction_id = salesdetail.transaction_id 
group by member.name

解决方案2:先聚合Sales Detail再关联

如果你的数据量比较大,先对Sales Detail按交易ID聚合计算总数量,再和其他表关联,能避免关联后的数据膨胀,提升查询性能:

select m.name as staffname,
       count(sh.transaction_id) as totaltransaction,
       sum(sd.total_qty) as totalqty
from member m
inner join salesheader sh on m.memberid = sh.memberid
inner join (
    -- 先计算每个交易的总数量
    select transaction_id, sum(qty) as total_qty
    from salesdetail
    group by transaction_id
) sd on sh.transaction_id = sd.transaction_id
group by m.name

这两种方法都能得到你期望的结果:

staffnametotaltransactiontotalqty
NEERAJ RANA26

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:46:45