【发布时间】:2015-01-27 13:44:42
【问题描述】:
给定一个具有以下属性的人员表:
ec,name,code,dob,salary
列出收入高于平均工资的员工。
我的解决方案:
select* from staff where salary > avg(salary);
这有什么问题?
【问题讨论】:
标签: sql
给定一个具有以下属性的人员表:
ec,name,code,dob,salary
列出收入高于平均工资的员工。
我的解决方案:
select* from staff where salary > avg(salary);
这有什么问题?
【问题讨论】:
标签: sql
聚合可能不会出现在 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 子句。
【讨论】:
count(*)。请参阅我的答案中的编辑。
SELECT * FROM SALARY WHERE count(SICKLEAVE) > 30 ;