ERROR 1111(HY000):组功能的使用无效

时间:2015-01-27 13:44:43

标签: mysql sql

给出下表 工作人员(ec,姓名,代码,dob,薪水)

Q值。列出收入超过平均工资的工作人员

我的解决方案。 select* from staff where salary > avg(salary);

它有什么问题?

1 个答案:

答案 0 :(得分:18)

聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中,并且要聚合的列是外部引用。

使用WHERE子句的示例:

select *
from staff 
where salary > (select avg(salary) from staff)

使用HAVING子句的示例:

select deptid,COUNT(*) as TotalCount
from staff
group by deptid
having count(*) > 2

Having子句指定组或聚合的搜索条件。 HAVING只能与SELECT语句一起使用。 HAVING通常用于GROUP BY子句。如果未使用GROUP BY,则HAVING的行为类似于WHERE条款。