2个月前,在我关注的DataScience MSccursur的背景下,我开始学习SQL。
使用SQL SERVER和示例数据库WideWorldImporters,我必须构建一个查询来为每个客户类别选择产生与未转换为发票的订单相关的最大损失的人。
我必须获得的结果是下表:
我建立了以下查询:
SELECT CustomerCategoryName,
MAX(SumLossesOrdersNotConverted) As MaxLoss
FROM
( SELECT Cat.CustomerCategoryName,
SUM(OL.Quantity * OL.UnitPrice) as SumLossesOrdersNotConverted,
C.CustomerName AS CustName,
C.CustomerID AS CustID
FROM Sales.OrderLines AS OL
JOIN Sales.Orders O ON OL.OrderID = O.OrderID
JOIN Sales.Customers AS C ON C.CustomerID = O.CustomerID
JOIN Sales.CustomerCategories AS Cat ON Cat.CustomerCategoryID = C.CustomerCategoryID
WHERE
NOT EXISTS
(
SELECT *
FROM Sales.Invoices as I
WHERE O.OrderID = I.OrderID
)
GROUP BY C.CustomerID,C.CustomerName,Cat.CustomerCategoryName
) AS LossSummary
GROUP BY CustomerCategoryName
ORDER BY MAX(SumLossesOrdersNotConverted) DESC
并且能够获得前两列:
但是尽管进行了很多搜索和努力,我仍然无法添加相应的CustomerName和CustomerID列。
当然,我尝试在外部选择中添加CustName,CustId。但这并没有给我意外的结果,因为我必须在GROUP BY中添加CustName,CustId:
我需要一个具有每个类别的最大损失以及相应的customerid的表
任何帮助将不胜感激。 预先感谢。
答案 0 :(得分:0)
这样做吗?
text()