SUM函数与JOINED表

时间:2012-05-20 21:10:21

标签: mysql sql

我正在尝试确定客户使用SQL花费的总金额。我有两个表,客户和订单。订单的每个订单都有一个'Total_Payment_Received'。对于Customers表上的给定CustomerID,我想要输出的所有“Total_Payment_Received”的总和。我不需要查看所有单独的订单,只需要查看他们与我们完成的业务总量。

感谢您的任何建议!

示例:

SELECT Customers.CustomerID, Customers.Company_Name
      ,SUM(Orders.Total_Payment_Received)
  FROM Customers
  JOIN Orders ON Customers.CustomerID = Order.CustomerID
  WHERE Customers.LastModified BETWEEN '01/01/11 00:00:01' AND '05/15/11 11:59:59';

2 个答案:

答案 0 :(得分:1)

  • 您需要按客户分组。我认为客户是由(主要密钥)CustomerID标识的,因此请使用:GROUP BY Customers.CustomerID

  • 对于日期,最好使用标准化的ISO格式'20110515''2011-05-15'格式,因此不存在歧义。当您使用'01/05/11'之类的内容时,如果它是01-May-2011Jan-05-20112001-May-11或甚至1901-May-11,则并不完全清楚。我想你使用的是Month/Day/Year格式,但我错了。

  • 使用<=<代替BETWEEN进行日期范围检查也更容易:

    SELECT Customers.CustomerID
         , Customers.Company_Name
         , SUM(Orders.Total_Payment_Received) AS Total_Amount_of_Business
    FROM Customers
        JOIN Orders 
            ON Customers.CustomerID = Order.CustomerID
    WHERE Customers.LastModified >= '2011-01-01' 
      AND Customers.LastModified < '2011-05-16' 
    GROUP BY Customers.CustomerID ;
    

答案 1 :(得分:0)

其中一种可能的方法是: 您需要使用与此类似的子查询。

SELECT 
    CustomerID, 
    (SELECT SUM(Total_Payment_Received) Total FROM Orders WHERE Orders.CustomerId=Customers.CustomerId) Total 
FROM Customers