给出下表 工作人员(ec,姓名,代码,dob,薪水)
Q值。列出收入超过平均工资的工作人员
我的解决方案。 select* from staff where salary > avg(salary);
它有什么问题?
答案 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
条款。