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

多销售表关联按客户、月度汇总销售额问题求解

问题根因
  • 原有SQL使用CROSS JOIN关联三个产品的统计子查询,只有同时在三张产品表有消费记录的客户+月度组合才会被保留,导致漏统计仅购买单类/两类产品的客户
  • 子查询存在笔误,例如统计product_b销售额的逻辑中错误调用了product_a.amount,基础计算逻辑本身就出错
解决方案

不需要分别统计三类产品再关联,直接先合并三张产品表的销售数据再做汇总,从根源避免JOIN导致的数据丢失:

SELECT 
    c.customer_id,
    t.month_id,
    ROUND(SUM(p.amount), 2) AS total
FROM customer c
-- 合并三张产品表的所有销售记录
LEFT JOIN (
    SELECT customer_id, date_id, amount FROM product_a
    UNION ALL
    SELECT customer_id, date_id, amount FROM product_b
    UNION ALL
    SELECT customer_id, date_id, amount FROM product_c
) p ON c.customer_id = p.customer_id
-- 关联时间映射表获取月度维度
LEFT JOIN time_id t ON p.date_id = t.date_id
-- 若需要输出所有客户(包括当月无消费、销售额为0的客户),删除下面这行WHERE条件即可
WHERE p.amount IS NOT NULL
GROUP BY c.customer_id, t.month_id
ORDER BY t.month_id, c.customer_id;
补充说明

如果需要保留所有客户的记录(哪怕当月无消费也展示销售额为0),删除上述WHERE条件,同时把求和逻辑修改为ROUND(SUM(IFNULL(p.amount,0)), 2)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:07