SELECT Product_Finish AS "Desk Finish",
AVG(Standard_Price) AS "Average Price"
FROM Product_T
WHERE "Average Price">300
ORDER BY "Average Price" DESC;
我做错了什么?
答案 0 :(得分:1)
有几个问题:
您使用聚合函数AVG()
,但查询中没有GROUP BY
子句
where
子句是指聚合列;您必须为此使用having
子句
标识符用双引号引起来; MySQL希望反引号
所以:
SELECT Product_Finish AS `Desk Finish`, AVG(Standard_Price) AS `Average Price`
FROM Product_T
GROUP BY Product_Finish
HAVING `Average Price`> 300
ORDER BY `Average Price` DESC;
更好的方法是使用不需要引用的标识符。另外,值得注意的是,与MySQL不同,并非所有数据库都在having
子句中支持列别名(在这种情况下,您需要重复聚合表达式)。这是标准的SQL:
SELECT Product_Finish AS desk_finish, AVG(Standard_Price) AS average_price
FROM Product_T
GROUP BY Product_Finish
HAVING AVG(Standard_Price) > 300
ORDER BY average_price DESC;