问:在northwind数据库中,获得员工最高认可的产品的员工对该员工的认可最高。
我的意思是我需要得到这样的结果:
Adam Iphone 131231(仅adam售出的iphone的总背书)
Mariaipad1233(只有mariaipad1233对IPad的总体认可,她作为产品的认可度最高)
我可以使用下面的代码来解决所有的问题。我不能在SUM中使用MAX。
SELECT E.FirstName,P.ProductName, SUM(OD.Quantity*OD.UnitPrice) AS [Toplam Satış]
FROM [Order Details] OD
INNER JOIN Products P ON P.ProductID=OD.ProductID
INNER JOIN Orders O ON O.OrderID=OD.OrderID
INNER JOIN Employees E ON O.EmployeeID=O.EmployeeID
GROUP BY E.FirstName,P.ProductName
ORDER BY E.FirstName,P.ProductName给那些没有NORTHWIND的人

发布于 2018-02-06 23:23:02
首先SUM(OD.Quantity*OD.UnitPrice)是一个子查询,然后你可以使用子查询获取MAX。
您将使用SUM获得MAX
SELECT x.FirstName,X.ProductName,MAX(X.Toplam Satış)
FROM
(
SELECT E.FirstName,P.ProductName, SUM(OD.Quantity*OD.UnitPrice) AS [Toplam Satış]
FROM [Order Details] OD
INNER JOIN Products P ON P.ProductID=OD.ProductID
INNER JOIN Orders O ON O.OrderID=OD.OrderID
INNER JOIN Employees E ON O.EmployeeID=O.EmployeeID
GROUP BY E.FirstName,P.ProductName
) AS X
GROUP BY X.FirstName,X.ProductName发布于 2018-02-06 23:22:54
我从你的问题中理解到的是,如果你有一个如下所示的表格:
FirstName ProductName TotalSale
A Y 10
A Z 20
B Z 30然后,您将看到如下输出:
FirstName ProductName TotalSale
A Y 10
B Z 30根据这一点,你能试一下这样的东西吗?我认为使用cte会帮助你解决这个问题。
;with cte (FirstName,ProductName,TotalSale) as
(
SELECT E.FirstName,P.ProductName, SUM(OD.Quantity*OD.UnitPrice) AS [TotalSale]
FROM [Order Details] OD
INNER JOIN Products P ON P.ProductID=OD.ProductID
INNER JOIN Orders O ON O.OrderID=OD.OrderID
INNER JOIN Employees E ON O.EmployeeID=O.EmployeeID
GROUP BY E.FirstName,P.ProductName
ORDER BY E.FirstName,P.ProductName
)
select cte.FirstName,cte.ProductName,MAX(cte.TotalSale)
from cte
inner join (select c.ProductName,max(c.TotalSale) as Max_sale
from cte c
group by c.ProductName) t on t.ProductName = cte.ProductName
and t.Max_Sale = cte.TotalSale
group by cte.FirstName,cte.ProductNamehttps://stackoverflow.com/questions/48645947
复制相似问题