homeWork03

--查询10号部门中编号最新入职的员工,工龄最长的员工的个人信息
select e.*
from emp e
where e.hiredate in
((select max(e1.hiredate) from emp e1 where e1.deptno = 10),
(select min(e2.hiredate) from emp e2 where e2.deptno = 10));
 
--从“software”找到‘f’的位置,用‘*’左右填充到15位,去除其中的‘a’。
select instr('software','f')from dual;
select lpad('software',15,'*') from dual;
select rpad('software',15,'*') from dual;
select replace('software','a') from dual
select replace('software','a','w') from dual
 
--查询员工的奖金,如果奖金不为NULL显示‘有奖金’,为null则显示无奖金
select e.ename,decode(e.comm,null,'无奖金','有奖金') from emp e;
 
--写一个查询显示当前日期,列标题显示为Date。
--再显示六个月后的日期,下一个星期 日的日期,该月最后一天的日期。
select sysdate "Date",
add_months(sysdate, 6) 六个月后,
next_day(sysdate, '星期日') 下个星期日,
last_day(sysdate) 该月最后一天
from dual;
 
--查询EMP表按管理者编号升序排列,如果管理者编号为空则把为空的在最前显示 (nulls first)
select * from emp e order by e.mgr asc nulls first
 
--求部门平均薪水
select e.deptno,avg(e.sal) from emp e group by e.deptno
 
--按部门求出工资大于1300人员的 部门编号、平均工资、最小佣金、最大佣金,并且最大佣金大于100
select e.deptno, avg(e.sal), min(e.comm), max(e.comm)
from emp e
where e.sal > 1300
group by e.deptno
having max(nvl(e.comm, 0)) > 100
 
--找出每个部门的平均、最小、最大薪水
select e.deptno,avg(e.sal),min(e.sal),max(e.sal) from emp e group by e.deptno;
 
--查询出雇员名,雇员所在部门名称,工资等级。
select * from emp e,dept d where e.deptno = d.deptno
select * from salgrade
 
select e.ename,d.dname from emp e ,dept d where e.deptno = d.deptno;
select e.ename,sg.grade from emp e,salgrade sg where e.sal between sg.losal and sg.hisal;
 
 
select e.ename, d.dname, sg.grade
from emp e, dept d, salgrade sg
where e.deptno = d.deptno
and e.sal between sg.losal and sg.hisal;
posted @ 2019-04-19 19:14  ki1616  阅读(77)  评论(0编辑  收藏  举报