嘿伙计们,我正在努力寻找产品清单价格高于其类别中产品的双倍平均价格。我做了类似这样的问题,我使用了一个HAVING子句来解决它,但是这个没有用。关于我做错什么的任何建议?
SELECT P.Name NameOfProduct,
PC.Name NameOfProductCategory,
P.ListPrice ProductListPrice,
AVG(P.ListPrice) AverageListPrice
FROM Product P
INNER JOIN ProductCategory PC ON (PC.ProductCategoryID = P.ProductCategoryID)
WHERE (P.ListPrice) > (AVG(P.ListPrice)*2)
GROUP BY P.Name, PC.Name
答案 0 :(得分:1)
如您所知,您不能在having
子句中使用聚合函数。您可以使用相关子查询执行所需操作:
SELECT P.Name NameOfProduct,
PC.Name NameOfProductCategory,
P.ListPrice ProductListPrice,
AVG(P.ListPrice) AverageListPrice
FROM Product P INNER JOIN
ProductCategory PC
ON PC.ProductCategoryID = P.ProductCategoryID
WHERE P.ListPrice) > (SELECT AVG(p2.ListPrice)*2
FROM Product p2
WHERE p2.ProductCategoryID = p.ProductCategoryID
)
GROUP BY P.Name, PC.Name, P.ListPrice;