繁体   English   中英

将SQL查询转换为子查询

[英]converting a sql query to subquery

我试图通过编写查询来选择前10名支出最高的消费者,以确定客户的支出行为。

我有以下查询,它工作正常:

SELECT c.CustomerID
     , SUM(Quantity * UnitPrice) Total_Spent
  FROM Orders o
  JOIN OrderDetails d
    ON d.OrderID = o.OrderID 
  JOIN Customers c
    ON c.CustomerID = o.CustomerID 
 GROUP 
    BY c.CustomerID
 ORDER
    BY Total_Spent
 limit 10;

但是,我想创建一个子查询,而不要使用这种复杂的查询。 我尝试了以下方法,但不起作用:

SELECT Customers.CustomerID
FROM Customers
JOIN (
    SELECT SUM(Quantity *UnitPrice) as Total_Spent
    FROM Orders
    JOIN OrderDetails
    ON Orders.OrderID = OrderDetails.OrderID) Orders
ON Orders.CustomerID = Customers.CustomerID
GROUP BY Customers.CustomerID
ORDER BY Total_Spent
LIMIT 10;

我不知道问题是什么。 (我对SQL有点陌生)

您可以简化查询,因为您不需要customers表。 那和表别名应该使您的查询更简单:

SELECT o.CustomerID, SUM(od.Quantity * od.UnitPrice) as Total_Spent
FROM Orders o JOIN
     OrderDetails od
     ON o.OrderID = od.OrderID
GROUP BY o.CustomerID
ORDER BY Total_Spent DESC
LIMIT 10;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM