SQL Query查找一组平均值的最大值

时间:2010-07-10 19:27:17

标签: sql sql-server sql-server-2005

这是基于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,但我真的陷入困境,请帮助我。

1 个答案:

答案 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