2010-07-10 118 views
0

這的是一個基於MS SQL Server中2005SQL查詢來發現的最大一組平均

首先Northwind數據庫查詢我得單價從OrderDetails表的平均水平,這組通過產品ID爲該特定列單獨並將其別名爲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,但我真的停留在這一點上,請幫助我。

回答

4

這2個步驟:「分組平均的未分組的最大」

您可以根據需要擴大這個它展示瞭如何在一個總

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 
+0

在第一次執行時出錯,請檢查並確認。 選擇 O.CustomerID, E.EmployeeID, E.FirstName +空間(1)+ E.LastName全名, OD.OrderID, OD.ProductID, (選擇從訂單明細AVG(DO.UnitPrice)通過DO.ProductID)AveragePrice DO其中OD.ProductID = DO.ProductID基, 選擇最大值(AveragePrice)作爲MaxAveragePrice從(選擇AVG(ODD.UnitPrice)作爲AveragePrice從訂單明細ODD組由ODD.ProductID)ABA 從OrderDetails OD 加入Orders O on OD.OrderID = O.OrderID 加入客戶C 上C.CustomerID = O.CustomerID 加入上E.EmployeeID = O.EmployeeID – user338292 2010-07-10 19:53:56

+0

很抱歉的壞格式,只需複製僱員e 和選擇... – user338292 2010-07-10 19:54:30

+0

atrueguy選擇它:我的答案是沒有設計成用作子查詢。它已完成 – gbn 2010-07-10 19:55:48