【问题标题】:Write an SQL Query to calculate total purchase amount of each customer编写一个 SQL 查询来计算每个客户的总购买量
【发布时间】:2020-03-25 01:59:56
【问题描述】:

我正在尝试从W3 Schools上的在线数据库中计算每个客户的总购买金额

我使用的表格是:

客户

订单

产品

订单详情

我当前的查询为我提供了客户的产品明智购买金额。我需要的是总购买金额。

SELECT c.CustomerID,o.OrderID,(ord.Quantity*p.Price) as 
Total_Amount
from Customers c inner join Orders o
inner join Products p
inner join OrderDetails ord
on c.CustomerID = o.CustomerID
and o.OrderID = ord.OrderID
and ord.ProductID = p.ProductID;

我的输出:

我需要具有相同订单 ID 和客户 ID 的值的总和。

我尝试了 group-by 和 sum,但它给出了所有产品的总和。

【问题讨论】:

  • 您使用的是哪个 dbms? (上面的查询语法无效,应该会报错...)
  • 这是MySQL,我也执行过。

标签: mysql sql group-by


【解决方案1】:

如果您需要具有相同订单 ID 和客户 ID 的值的总和,那么您需要根据客户 ID 和订单 ID 对行进行分组。

SELECT c.CustomerID,o.OrderID,SUM(ord.Quantity*p.Price) as Total_Amount
from Customers c inner join Orders o
inner join Products p
inner join OrderDetails ord
on c.CustomerID = o.CustomerID
and o.OrderID = ord.OrderID
and ord.ProductID = p.ProductID
Group By c.CustomerID,o.OrderID

【讨论】:

    【解决方案2】:

    你只想要一个GROUP BY:

    SELECT c.CustomerID, SUM(ord.Quantity*p.Price) as 
    Total_Amount
    FROM Customers c inner join Orders o
         on c.CustomerID = o.CustomerID join
         OrderDetails ord
         on o.OrderID = ord.OrderID join
         Products p
         on ord.ProductID = p.ProductID
    GROUP BY CustomerID;
    

    请注意,这对JOINs 进行了排序,因此ON 子句是交错的。 JOINs 通常是这样写的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-06
      • 2022-01-11
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 2023-03-24
      • 2017-08-08
      相关资源
      最近更新 更多