这是基于MS SQL Server 2005中的Northwind数据库的查询。
首先,我必须从OrderDetails表中获取UnitPrice的平均值,并将其按照该特定列的ProductID分组,并将其别名为AveragePrice。
然后我需要找到最大值(AveragePrice),它只是前一列的最大值,我怎么能这样做?对我而言,这对我来说是一种非常棘手的问题。
select
O.CustomerID,
E.EmployeeID,
E.FirstName+space(1)+E.LastName FullName,
OD.OrderID,
OD.ProductID,
(select avg(DO.UnitPrice) from OrderDetails
DO where OD.ProductID = DO.ProductID
group by DO.ProductID) AveragePrice ,
from OrderDetails OD
join Orders O
on OD.OrderID = O.OrderID
join Customers C
on C.CustomerID = O.CustomerID
join Employees E
on E.EmployeeID = O.EmployeeID
这不是一个家庭作业的问题,我正在学习SQL,但我真的陷入困境,请帮助我。
答案 0 :(得分:4)
这是两步:“未分组的最大分组平均值”
您可以根据需要展开它,以显示如何在聚合
之上应用聚合SELECT
MAX(AveragePrice) AS MaxAveragePrice
FROM
(
select
avg(UnitPrice) AS AveragePrice, ProductID
from
OrderDetails
group by
ProductID
) foo
或使用CTE
;WITH AvgStuff AS
(
select
avg(UnitPrice) AS AveragePrice
from
OrderDetails
group by
ProductID
)
SELECT
MAX(AveragePrice) AS MaxAveragePrice
FROM
AvgStuff