преобразование SQL-запроса в подзапрос - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь определить поведение клиентов по расходам, написав запрос, чтобы выбрать 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)

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете упростить ваш запрос, потому что вам не нужна таблица 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...