消息关闭
    暂无新消息!

初学者求条SQL语句

问题作者 : 伊可2017-08-24发布
最近在看《Oracle 11g数据库管理员指南》这本书,发现书中有个错误。
示例:假设要求按照部门号对员工的工资进行统计,参加统计的员工工资必须大于1000 元,将统计结果中凡满足最低工资在900元以上,并且工资总和在7000元以上的部门统计信息显示出来,显示时按照工资总和从大到小排序,如果工资总和相同,再按照部门号从小到大排序。
书中给出的语句是:select deptno as 部门号,avg(sal) as 平均工资,min(sal) as 最低工资,max(sal) as 最高工资,sum(sal) as 工资总和 from emp where sal>1000 group by deptno having min(sal)>900 and sum(sal)>7000 order by max(sal) desc,deptno asc;
疑问:在where子句中已将员工工资低于1000元的数据剔除,不参与统计。所以输出的数据中的sal全部是大于1000元的,结果,在having子句中,部门最低工资在900元以上的条件其实是多余的,没有达到示例中要求的目的。请大神给出正确的语句。

2个回答

︿ 0
根据问题描述, 某人工资有多份 如果有一份工资大于1000就可以查询出此人。 但是他还有一份最小的工资,所以在having 中再次进行了过滤,将最少一份工资低于900的人过滤掉。