过度分区不适用于加权AVG Calc

时间:2012-11-27 19:06:35

标签: tsql average weighted

我不知道我怎么会错过这个,但我相信这是从深夜开始的! 任何帮助赞赏 假设我们使用NorthWind来计算加权AVG

USE NORTHWIND
Select  OD.UnitPrice,OD.Quantity,
sum(OD.UnitPrice*OD.Quantity)/sum(OD.Quantity) OVER (PARTITION BY
OD.UnitPrice, OD.Quantity) as[ W-AVERAGE] 
 From [Order Details] OD

我不知道为什么SQL一直在说明列'Order Details.UnitPrice'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。我以为使用分区通过解决必须有一个组?

1 个答案:

答案 0 :(得分:3)

已解决:您必须在每个聚合中使用分区,错误消息有点误导,但只要记住每次使用PArtition时,必须在任何聚合函数的每个实例中使用它!

           Select OD.UnitPrice,OD.Quantity,
           sum(OD.UnitPrice*OD.Quantity) Over (PARTITION BY OD.UnitPrice,  
           OD.Quantity)/sum(OD.Quantity) OVER (Partition By OD.Quantity) as[W-AVERAGE] 
           From [Order Details] OD