【问题标题】:Working with subqueries in SQL server在 SQL Server 中使用子查询
【发布时间】:2011-10-12 14:26:53
【问题描述】:

对于 SQL 服务器,我仍然是个菜鸟。我知道一些事情,但其他人似乎仍然如此混乱。我知道你练习得越多,你就会越好。好吧,我正在做这部分工作,这让我有点困惑。它正在使用northwind 数据库显示从花费超过25,000 美元的客户那里购买的最近五个订单。好的,我知道我将使用客户表和订单表。让我抓狂的是,你是如何得到这 5 个花费 25,000 美元的客户的。我敢肯定我可能知道,但我的头脑并不认为它知道。

我认为这个对我来说很难的原因是因为我有一个订单详细信息,其中包含 OrderID、ProductID、UnitPrice、Quantity 和折扣。

那么您的订单没有任何处理金钱问题的信息。然后你就有了客户,我知道我需要用它来展示花费超过 25,000 的 5 位客户。

对于订单详细信息,我不知道如何很好地使用它,因为它们分为两个名称。由于两个词之间有空格,我可以在它周围加上一个括号。

我相信人们会对此投反对票,或者说我在 SQL 假人上看到了这个,但我只是想理解这一点。我知道您看不到我的数据库以查看我在看什么,但我也会尽力解释为什么我如此困惑。我只是想理解这一点。感谢所有关注此主题的人。

这就是我到目前为止所拥有的,我知道我想在其中添加 5 我只是不明白在哪里。

  SELECT ContactName FROM Customers
    INNER JOIN [Order Details]ON OrderId = 
CustomerID
INNER JOIN Orders ON Product.ID = Orders.ID
WHERE UnitPrice >= 25000

【问题讨论】:

  • 子查询是一个 SQL 概念,不限于 SQL Server。
  • 如果您将表定义添加到帖子中,也许您会得到更好的响应。无论如何,如果你交作业,你将需要它们......
  • 到目前为止你尝试过什么 SQL?
  • 对于 Wildplasser,您要求什么?对于 Bernard,我正在使用 microsoft SQL Server 2008,并且我有一些我正在使用的示例,但是当我尝试在其中输入所有内容时,我在单词下方看到一条读取行。
  • 如果同一天有多个客户,是否要按订单的价值进行排序?另外,如果同一日期有 10 个订单,您如何决定要拿哪 5 个?

标签: sql-server database northwind


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-01-15
    • 2012-04-17
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多