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

如何对UserOrdersActivity和Orders两张表分组求和订单金额

用户订单金额求和解决方案

核心结论

你尝试的查询逻辑是正确的,它已经能实现按用户ID分组,计算该用户所有关联订单的总金额,最终每个UserID对应一行总金额数据。

代码解释

你的查询语句:

SELECT a.UserID,        
  SUM(b.[Order Price]) AS [Total Fees]
FROM #Orders b
INNER JOIN #UserOrdersActivity a ON a.OrderID = b.OrderID    
GROUP BY a.UserID
  • INNER JOIN:关联两张表,确保只统计存在对应订单记录的用户
  • SUM(b.[Order Price]):对每个用户关联的所有订单金额求和
  • GROUP BY a.UserID:按用户ID分组,将同一用户的所有订单金额合并计算

可能的优化与注意事项

  • 处理无订单用户:如果需要统计所有用户(包括没有订单的用户),将INNER JOIN改为LEFT JOIN,并配合ISNULL处理空值:
    SELECT a.UserID,        
      ISNULL(SUM(b.[Order Price]), 0) AS [Total Fees]
    FROM #UserOrdersActivity a
    LEFT JOIN #Orders b ON a.OrderID = b.OrderID    
    GROUP BY a.UserID
    
  • 避免重复统计:如果UserOrdersActivity表中存在同一OrderID对应多个记录的情况,会导致订单金额被重复计算。此时需要先对UserOrdersActivity去重:
    SELECT a.UserID,        
      SUM(b.[Order Price]) AS [Total Fees]
    FROM #Orders b
    INNER JOIN (
        SELECT DISTINCT UserID, OrderID 
        FROM #UserOrdersActivity
    ) a ON a.OrderID = b.OrderID    
    GROUP BY a.UserID
    
  • 排序结果:如果需要按用户ID排序,可在末尾添加ORDER BY a.UserID ASC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:37:40