【发布时间】:2021-07-16 16:42:25
【问题描述】:
给定一个数据结构,例如
employees:
| id | name |
|----|------|
|1001| John |
sales:
| id | employee_id | sale_price |
|----|-------------|------------|
|1 | 1001 |15.00 |
|2 | 1001 |55.00 |
|3 | 1001 |96.00 |
当按员工 ID 分组并对 sale_price 进行 SUM 时,查询按预期输出:
1001 | John | 166.00
我想写一个查询,例如:
SELECT A.*, SUM(B.sale_price) AS total
FROM employees A
LEFT JOIN sales B
ON B.employer_id=A.id
WHERE SUM(B.sale_price) > 50 -- ERROR HERE
GROUP BY A.id
但我收到一条错误消息:Error Code: 1111. Invalid use of group function
据我了解,它无法评估 where 子句,因为尚未执行分组以使聚合函数起作用。有什么方法可以过滤这个聚合函数吗?
【问题讨论】:
-
使用
HAVING子句。我投票结束是一个错字。 -
为什么不使用命名良好的列:HAVING total > 50