user338292
user338292

Reputation: 105

SQL Query to find the maximum of a set of averages

This is a query based on the Northwind Database in MS SQL Server 2005.

First I have to get the average of the UnitPrice from OrderDetails table, and group it by ProductID for that particular column alone and alias it as AveragePrice.

Then I need to find the maximum(AveragePrice) which is nothing but the max of previous column, how can I do it??? This is a kind of very tricky for me its taking me ages to think on it.

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

This is not a Homework question, am learning SQL, but am really stuck at this point, please help me.

Upvotes: 0

Views: 116

Answers (1)

gbn
gbn

Reputation: 432210

It's 2 steps: "the ungrouped maximum of the grouped averages"

You can expand this as needed which shows how to apply an aggregate on top of an aggregate

SELECT
    MAX(AveragePrice) AS MaxAveragePrice
FROM
    (
    select
         avg(UnitPrice) AS AveragePrice, ProductID
    from
        OrderDetails
    group by
        ProductID
    ) foo

Or with CTE

;WITH AvgStuff AS
(
    select
         avg(UnitPrice) AS AveragePrice
    from
        OrderDetails
    group by
        ProductID
)
SELECT
    MAX(AveragePrice) AS MaxAveragePrice
FROM
    AvgStuff

Upvotes: 4

Related Questions