Работа с подзапросами в SQL-сервере
Я все еще новичок, когда дело доходит до сервера SQL. Я знаю кое-что, но другие все еще кажутся такими запутанными. Я знаю, чем больше вы практикуетесь с этим, тем лучше становитесь. Ну, я работаю над этой частью, которая, похоже, запутала мой разум. Он использует базу данных Northwind и показывает последние пять заказов, которые были приобретены у клиента, который потратил более 25 000 долларов. Хорошо, я знаю, что буду использовать таблицу клиентов и таблицу заказов. Что сводит меня с ума, так это то, как вы получаете это, когда 5 клиентов потратили 25000. Я уверен, что, наверное, знаю это, но мой разум не думает, что это так.
Причина, по которой я думаю, что это сложно для меня, заключается в том, что у меня есть детали заказа, в которой есть OrderID, ProductID, UnitPrice, Количество и скидки.
тогда у вас есть заказы, которые не имеют никакой информации, касающейся денежной эмиссии. Тогда у вас есть клиенты, которых, я знаю, мне нужно будет использовать, чтобы показать 5 клиентов, которые потратили более 25 000 человек.
С деталями заказа я не знаю, как правильно его использовать, потому что они разделены на два имени. Я задаюсь вопросом, могу ли я поставить вокруг него скобку, так как между двумя словами есть пробел.
Я уверен, что люди собираются проголосовать за это или сказать, что я видел это на манекенах SQL, но я просто пытаюсь понять это. Я знаю, что вы не можете видеть мою базу данных, чтобы увидеть то, на что я смотрю, но я также постараюсь объяснить, почему я так растерялся. Я просто пытаюсь понять это. Спасибо всем, кто заглянул в эту тему.
Это то, что у меня есть, я знаю, что мне не хватает добавить 5, я просто не понимаю, где тоже.
SELECT ContactName FROM Customers
INNER JOIN [Order Details]ON OrderId =
CustomerID
INNER JOIN Orders ON Product.ID = Orders.ID
WHERE UnitPrice >= 25000
1 ответ
Вам нужно присоединиться к подзапросу из деталей заказа, чтобы вы могли получить сумму заказа.
select Top 5 [Customer].ContactName,[Order].OrderDate,detail.total
from [Customer] inner join
[Order] on [Customer].CustomerID = [Order].CustomerID inner join
(SELECT [OrderID],SUM(([UnitPrice]*[Quantity])-[Discount]) as total FROM [OrderDetail] GROUP BY [OrderID]) as detail on [Order].OrderID = detail.OrderID
WHERE detail.total > 25000
ORDER BY [Order].OrderDate DESC