ORACLEクエリー練習問題

7019 ワード

--01.         ,     *   
--        ,      ,   
--01.   (job) 'PRESIDENT'       
 Select ename,job,sal from emp
				Where job=’PRESIDENT’;
        
--02.     0  null       
Select * from emp where comm=0 or comm is null;

--03.       1981-5-1 1981-12-31           
Select * from emp 
Where
hiredate >to_date(‘1981-5-1’,’yyyy-mm-dd’)
and
hiredate<=to_date(‘1981-12-31’,’yyyy-mm-dd’);

--04..         4         ,   
Select ename,empno from emp 
Where enaem like ‘____’;

--05.  10         20         
Select ename,job,deptno from emp
Where (deptno=10 and job=’MANAGER’ OR DEPTNO=20);

--06.      'L'            'SM'       
Select ename from emp 
Where
 (ename not like ‘%L%’)
 Or
 (ename like %SM%);
 
--07.            
Select * from emp where job=’MANAGER’;

--08.                   
Select * from emp where comm>sal;

--10. hiredate         ,         : 
Select ename,hiredate from emp 
Where extract(month from hriedate)=extract(month from sysdate)-1;

--11. hiredate         ,          
Where extract(month from hriedate)=extract(month from sysdate)+1;

--12. 1982       
Select * from emp where extract(year from hiredate)=’1982’;

--13. 1981          
Select * from emp where 
hiredate > to_date(‘1981-6-1’,’yyyy-mm-dd’)
and
hiredate
(SELECT sal
FROM emp 
WHERE ename='ALLEN')

--06.   scott            (   ) 
SELECT * 
FROM emp
WHERE job=
  (SELECT job
  FROM emp
  WHERE ename='SCOTT')
  AND ename<>'SCOTT'

--07.     (‘SALES’)      
SELECT ename
FROM emp
WHERE deptno=(
SELECT deptno
FROM dept
WHERE dname='SALES')

--08.   30  ’MARTIN’                
SELECT ename,sal
FROM emp
WHERE sal=(
SELECT sal
FROM emp
WHERE deptno=30 
AND ename='MARTIN')

--09.            (      )      
SELECT ename,sal
FROM emp
WHERE job='ANALYST' AND sal>
(SELECT MAX(avg(sal))
FROM emp
GROUP BY deptno)

--10.                     (   ) 
SELECT e.ename,e.sal,d.dname
FROM emp e,dept d
WHERE e.deptno=d.deptno

--11.      (RESEARCH)       ,  ,    ,      
SELECT d.deptno,e.ename,d.dname,d.loc
FROM dept d,emp e
WHERE d.dname='RESEARCH'
AND e.deptno=d.deptno
select * from dept
--12.               
SELECT d.dname,temp.count
FROM dept d,(
SELECT deptno dno,COUNT(empno) count
FROM emp GROUP BY deptno ) temp
WHERE d.deptno=temp.dno

--13.                (          )        (   )
 --   ,   
 SELECT d.dname,e.job,tmp.con
 FROM emp e,dept d,(SELECT job j,COUNT(empno) con FROM emp GROUP BY job) tmp
 WHERE sal>
 (SELECT ROUND(AVG(sal),2)
 FROM emp)
 AND tmp.j=e.job
 AND d.deptno=e.deptno;
 --select count(*),job from emp where sal>(select avg(sal) from emp) group by job; 

--14.               (   ) 
SELECT e.ename,e.sal
FROM emp e
WHERE (SELECT COUNT(*)
FROM emp
WHERE sal=e.sal GROUP BY sal )>1

--15.       3     (  ) 
SELECT *
FROM 
(SELECT e.* ,
ROW_NUMBER() OVER(ORDER BY sal desc) id 
FROM emp e)
WHERE id<=3

--16.       :   1  ,        
--(       1    2 ,       ) 
SELECT e.*,RANK()OVER(ORDER BY sal DESC)    
FROM emp e

--17.        (     )    
SELECT e.*
FROM emp e
WHERE (
SELECT COUNT(*) 
FROM emp 
WHERE e.hiredate=hiredate 
GROUP BY hiredate )>1

--18.            
SELECT e.deptno,MAX(sal)
FROM emp e
GROUP BY deptno;

--19.      ,          
SELECT deptno,job,MAX(SAL)
FROM emp
GROUP BY deptno,job 
ORDER BY deptno;

--20.              ,   (Salgrade) 
SELECT e.*,s.grade
FROM emp e,salgrade s
WHERE e.sal 
BETWEEN s.losal AND s.hisal
SELECT * FROM salgrade;

--21.        6-10    
  : 
R SAL 
---------- ----- 
6 2450 
7 1600 
8 1500 
9 1300 
10 1250 
Order by   rownum  ,
SELECT * 
FROM (SELECT ROWNUM r,sal
FROM( SELECT sal 
FROM emp ORDER BY sal DESC))
WHERE r BETWEEN 6 AND 10;
 
--22.                
SELECT *
FROM emp 
WHERE sal in (SELECT MAX(sal)
FROM emp
GROUP BY deptno)

--23.            2    
SELECT *
FROM 
(SELECT e.*,ROW_NUMBER()OVER(PARTITION BY deptno ORDER BY sal) DES
FROM emp e) 
WHERE DES<3

--24.    3          (   ) 
SELECT * 
FROM emp e
WHERE(
SELECT COUNT(*)
FROM emp WHERE e.empno=mgr)>=3

--25.                  
SELECT  * 
FROM emp e
WHERE e.sal >
(SELECT ROUND(AVG(sal),2) AVG
FROM emp 
WHERE e.deptno=deptno)

--26.              
SELECT d.*,avgsal
FROM dept d,
(SELECT deptno,AVG(sal) avgsal FROM emp GROUP BY deptno) e
WHERE avgsal=
(SELECT MAX(AVG(sal)) maxsal FROM emp GROUP BY deptno)
AND d.deptno=e.deptno

--27.                     
SELECT d.deptno,d.dname,e.avg
FROM dept d,
(SELECT e.deptno dno, AVG(sal) avg FROM emp e GROUP BY deptno) e
WHERE e.avg=
(SELECT MAX(AVG(sal)) maxavg FROM emp GROUP BY deptno)
AND e.dno=d.deptno

--28.                        
SELECT e.*,d.*
FROM emp e,dept d
WHERE e.sal>
(SELECT MAX(AVG(sal))
FROM emp e
GROUP BY deptno)
AND d.deptno=e.deptno

--29.            
SELECT d.*,e.count
FROM dept d,
(SELECT e.deptno dno,COUNT(empno) count
FROM emp e 
GROUP BY deptno)e
WHERE e.dno(+)=d.deptno
AND e.count is null

--partIII
--1、                (     )
SELECT d.*,e.* FROM dept d,
(SELECT e.deptno dno,e.* FROM emp e)e
WHERE d.deptno=e.dno

--2、    (  ) 'SMITH'        (     )
SELECT e.*
FROM emp e
WHERE e.sal>
(SELECT sal 
FROM emp 
WHERE ename='SMITH' )
 
--3、                (     )
SELECT e.*,d.empno
FROM emp e,emp d
WHERE e.mgr=d.empno(+)

--4、      (    )            (    )
SELECT e.*
FROM emp e,emp d
WHERE e.mgr=d.empno
AND e.hiredate1500

--8、    sales(  )        ,             
--(           )
SELECT e.deptno,e.*
FROM dept d,emp e
WHERE dname='SALES'
AND e.deptno=d.deptno;

--9、                   (    )
SELECT e.*
FROM emp e
WHERE e.sal>
  (SELECT MAX(AVG(sal))
  FROM emp
  GROUP BY deptno)

--10、   "SCOTT"           (     )
SELECT e.*
FROM emp e
WHERE e.job=
  (SELECT job
  FROM emp
  WHERE ename='SCOTT')
  AND e.ename<>'SCOTT'

--11、         30             (   )

--12、         30             (     )
SELECT e.ename,e.sal
FROM emp e
WHERE e.sal>(SELECT MAX(sal)
FROM emp
WHERE deptno=30)

--13、         (   )
--      (  )     (      )
SELECT d.*,e.count
FROM dept d,
(SELECT e.deptno dno,COUNT(deptno) count
FROM emp e
GROUP BY e.deptno)e
WHERE e.dno(+)=d.deptno

--14、         、       (   )
SELECT e.ename,d.dname,e.sal
FROM emp e,dept d
WHERE e.deptno(+)=d.deptno

--15、                         (      )
SELECT e.deptno,d.deptno,e.job,d.job,e.ename,d.ename
FROM emp e,emp d
WHERE e.job=d.job AND e.deptno<>d.deptno AND e.ename