--1.
--
select * from
(select emp.deptno no,dept.dname name,avg(sal) avgsal
(select max(AVGSAL) from
--
select * from
--2
select empno,ename,sal,dname
--3
select ename,e.job,e.sal from emp e,(select job,min(sal) minsal
--4
select t.ename mgr,e.ename from emp e,
--5
select t1.empno,t1.ename,t1.mgr,t2.sal mgrsal from emp t1,emp t2
where t1.mgr=t2.empno order by mgrsal desc
--6
select count(*) ,avg(sal) from
(select sal,comm,nvl2(comm,1,0) nvl from emp)
group by nvl order by nvl desc
--725002500
select * from
where rownum=1
--8
select t.empno,t.ename,d.dname from dept d,
(select t1.empno,t1.ename,t1.deptno from emp t1,emp t2
where d.deptno=t.deptno
--94
select dname from emp,dept where emp.deptno=dept.deptno
group by dept.deptno,dept.dname having count(*)>=4
--10“SMITH”
select * from emp
where sal>(select sal from emp where ename='SMITH')
--11'S'
select dname,sum(sal),count(emp.deptno)
--12"CLERK"
select dname,count(*) num from emp e,dept d
where e.deptno=d.deptno and job='CLERK' group by dname
--133000
select * from emp where empno in
(select t1.mgr from emp t1,emp t2
where t1.mgr=t2.empno and t2.sal>3000)
--14"sales"
select ename from emp e,dept d
where e.deptno=d.deptno and dname='SALES'
--1530
select ename,sal,dname from emp e,dept d
where e.deptno=d.deptno
and sal>all(select sal from emp where deptno=30)
--16
select d.deptno,d.dname,count(*) num from emp e,dept d
where e.deptno=d.deptno group by d.deptno,d.dname
--17(没看懂题目要求,好像有点问题)
select dname,j.job,djavgsal,davgsal,javgsal from
full outer join
on (dj.job=j.job)
--18"BLAKE""BLAKE"
select * from emp
where deptno in (select deptno from emp where ename='BLAKE')
and ename!=(select ename from emp where ename='BLAKE')
--19“KING”
select d.deptno,dname,count(ename) from emp e, dept d where
e.deptno=d.deptno and
d.deptno=(select deptno from emp where ename='KING') group by dname,d.deptno
--20"WARD"
select ename from emp where hiredate=(
select max(hiredate) from emp where
deptno=(select deptno from emp where ename='WARD'))
and deptno=(select deptno from emp where ename='WARD')
--21
(select mgr from emp where mgr is not null)
--22A
select dname from(select count(ename) a ,dname from emp e,dept t
where e.deptno=t.deptno and ename like 'A%' group by dname order by a desc)
where rownum=1
--23SMITH