mysql - mysqlworkbench 中的这个查询有什么问题?
问题描述
SELECT Product_Finish AS "Desk Finish",
AVG(Standard_Price) AS "Average Price"
FROM Product_T
WHERE "Average Price">300
ORDER BY "Average Price" DESC;
我做错了什么?
解决方案
有几个问题:
您使用聚合函数
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;
推荐阅读
- python - 为什么我的 Jupyter notebook 显示两条蟒蛇?
- android - 未收到 Firebase 通知
- css - 字体在 Safari/iOS 上出现超薄
- javascript - JavaScript:编写一个编辑范围内字符串的函数
- sql - 在 SELECT 中使用变量作为数据库名称的 SQL 函数
- python - 如何使用相同的功能填写我的模式框?
- javascript - 从异步存储中获取 initialRouteName 时出现问题
- android-studio - Android Studio 在 win10 x64 上无法启动
- sql-server - SQL71502: ... 对对象 [sys].[dm_exec_cursors] 的未解析引用
- sql - 排序后重新设置标识列