最近在看《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元以上的条件其实是多余的,没有达到示例中要求的目的。请大神给出正确的语句。
示例:假设要求按照部门号对员工的工资进行统计,参加统计的员工工资必须大于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元以上的条件其实是多余的,没有达到示例中要求的目的。请大神给出正确的语句。
解决方案 »
- 请问有介绍使用"PLSQL Developer"操作oracle 10g的书吗?
- 那位兄弟姐妹帮忙下 Oacle 数据库怎么建立数据库建库的脚本的是什么!?
- SELECT NAME FROM MOBILE_MAIN NATURAL JOIN MOBILE_SUB关于natural join
- 关于存储过程的编译问题
- oracle日期函数
- 怎样查询一个char列的长度?
- create table语句
- 关于用户创建和授权的问题,急!!!在线给分
- 一个很简单的问题.
- 急求问,我的oracle Management Serverl的用户名和密码如何找回??
- 求个SQL语句
- 我在oracle数据库删除表和导入dmp文件时报了很多错,能帮我看看嘛
from emp where sal>1000 and
deptno in(select deptno from emp group by deptno having min(sal)>900 and sum(sal)>7000)
group by deptno
order by max(sal) desc,deptno asc;