mysql - mySQL 在新创建的列上使用 where
问题描述
所以,我认为这很简单,但我搞砸了。
我有查询
SELECT AVG(price), food_type
FROM instructor
GROUP BY food_type
产生这个:
Price | food_type |
2.25 | Drink |
1.50 | Candy |
3 | Soup |
我试图退回所有超过 2 美元的价格
所以我想要:
Price | food_type |
2.25 | Drink |
3 | Soup |
看起来应该很简单
SELECT AVG(price), food_type
FROM instructor
WHERE AVG(price) > 2
GROUP BY food_type
但我无法让它工作。
我究竟做错了什么?
解决方案
您不能在where
子句中使用聚合函数。相反,您需要having
:
SELECT AVG(price), food_type
FROM instructor
GROUP BY food_type
HAVING AVG(price) > 2
在 MySQL 中,您还可以在HAVING
子句中引用别名(这是对标准 SQL 的扩展):
SELECT AVG(price) avg_price, food_type
FROM instructor
GROUP BY food_type
HAVING avg_price > 2
推荐阅读
- jquery - Heroku 应用程序 - 未找到 Popper(Heroku 看不到 popper.js)
- sql - 如何在 SQL Server 中的特定值之后选择下一个值?
- wordpress - wordpress 联系表 7 问题 - 如果我们有这么多联系表,如何跟踪来自哪个联系表的潜在客户
- node.js - 在 Node.js (Express) 身份验证控制器和 Node 邮件程序中将标头发送到客户端后无法设置标头
- multithreading - 如何在 Xamarin 表单的 ContentPage 上使用 RunOnUiThread
- google-bigquery - Google BigQuery 总是用逗号分隔列
- typescript - 在 mixin 函数中使用现有类(js 构造函数)
- python - 在 python boto3 中使用 AWS cognito Identity 和 openID salesforce
- c# - Visual Studio Mac 上的超出范围异常,但在 vs Windows 上没有 - 两者都是 2017
- c# - .NET 自定义语言注册