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

SQL分组问题:如何合并同一客户消费记录并求和?

解决同一客户消费记录拆分的SQL查询问题

嘿,我看你遇到的问题是同一客户针对1992 Ferrari 360 Spider red的消费记录被拆成了多行,没法合并计算总消费对吧?这问题出在你原来的GROUP BY子句里——你把ODF.priceEach也放进分组条件里了,这就导致只要单价不一样,同一客户的记录就会被分成不同的组,自然没法得到合并后的总和。

修正后的SQL查询

SELECT 
    C.customerNumber, 
    C.customerName, 
    P.productName, 
    SUM(ODF.priceEach) AS totalSpent
FROM orderDetailFacts ODF
LEFT JOIN Customers C ON ODF.customerNumber = C.customerNumber
LEFT JOIN Products P ON ODF.productCode = P.productCode
WHERE P.productName LIKE '%1992 Ferrari%'
GROUP BY C.customerNumber, C.customerName, P.productName
ORDER BY totalSpent DESC
LIMIT 5;

关键调整说明

  • 移除ODF.priceEach分组:我们的目标是按客户和产品来汇总总消费,而不是按单价分组。去掉这个字段后,同一客户、同一产品的所有订单明细会被合并到同一个分组里,SUM(ODF.priceEach)就能计算出该客户在这个产品上的总消费金额(比如你提到的Mini Gifts Distributors Ltd就能得到386.09的总和)。
  • 添加别名totalSpent:给求和结果起一个清晰的别名,让查询结果更易读。

额外提示

如果你的orderDetailFacts表包含quantity字段(这是订单明细表的常见字段,代表购买数量),那正确的总消费计算应该是单价乘以数量的总和,也就是把SUM(ODF.priceEach)改成SUM(ODF.priceEach * ODF.quantity),这样得到的才是真正的消费总金额,你可以根据实际表结构来调整这部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:12:57