一千萬個為什麽

搜索

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

這是基於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,但我真的陷入了這一點,請幫助我。

最佳答案

這是兩個步驟:“未分組的最大分組平均值”

您可以根據需要展開它,以顯示如何在聚合上應用聚合

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

轉載註明原文: SQL Query查找一組平均值的最大值