◈ 연 습 문 제 ◈
1. EMP 테이블에서 Blake와 같은 부서에 있는 모든 사원의 이름과 입사일자를
출력하는 SELECT문을 작성하시오.
select a.ename, a.hiredate
from emp a join dept b
on a.deptno = b.deptno
where a.deptno = (select deptno
from emp
where ename = 'BLAKE');
è 서브쿼리로 blake의 부서번호를 구한 뒤 메인쿼리에 조건절로 적용시켜서 blake와
같은 사원들의 정보를 출력합니다.
2. EMP 테이블에서 평균 급여 이상을 받는 모든 종업원에 대해서 종업원 번호와 이름을 출력하는 SELECT문을 작성하시오. 단 급여가 많은 순으로 출력하여라.
select empno, ename, sal
from emp
where sal > (select avg(sal)
from emp)
order by sal desc;
è 서브쿼리로 평균급여를 구하고, 그 값으로 조건을 줘서 출력
3. EMP 테이블에서 이름에 “T”가 있는 사원이 근무하는 부서에서
근무하는 모든 종업원에 대해 사원 번호,이름,급여를 출력하는 SELECT문을 작성하시오. 단 사원번호 순으로 출력하여라.
select empno, ename, sal
from emp
where deptno IN (select deptno
from emp
where ename like '%T%'
group by deptno)
è 서브쿼리로 T가 들어간 사람에 부서번호를 찾아와서 IN 연산으로 부서번호가 같은
사람을 출력시킴
4. EMP 테이블에서 부서 위치가 Dallas인 모든 종업원에 대해 이름,업무,급여를 출력하는 SELECT문을
작성하시오.
select ename, job, sal
from emp
where deptno = (select deptno
from dept
where loc = 'DALLAS')
order by sal;
è 서브쿼리로 dallas의 부서번호를 찾고, 메인쿼리에서 같은 부서들을 찾아서
출력
5. EMP 테이블에서 King에게 보고하는 모든 사원의 이름과 급여를 출력하는 SELECT문을 작성하시오.
select ename, sal
from emp
where mgr = (select empno
from emp
where ename = 'KING')
order by sal;
è 서브쿼리로 king의 사원번호를 찾고, 메인쿼리에서 조건으로 사용하여 출력
6. EMP 테이블에서 SALES부서 사원의 이름,업무를 출력하는 SELECT문을 작성하시오.
select ename, job
from emp
where deptno = (select deptno
from dept
where dname = 'SALES')
order by job;
è 서브쿼리로 sales의 부서번호를 구한 뒤 메인쿼리에서 부서번호와 같은 사원들을 출력시킴
7. EMP 테이블에서 월급이 부서 30의 최저 월급보다 높은 사원을 출력하는 SELECT문을 작성하시오.
select empno 사번, ename 이름 , sal 급여
from emp
where sal > (select MIN(sal)
from emp
where deptno = 30);
è 서브쿼리로 30번부서에서 월급이 가장 작은 사람을 찾은 뒤 메인쿼리에서 그보다 큰 사원들을 출력.
8. EMP 테이블에서 부서 10에서 부서 30의
사원과 같은 업무를 맡고 있는 사원의 이름과 업무를 출력하는 SELECT문을 작성하시오.
select *
from emp
where deptno = 30
and job IN (select job from emp where deptno = 10);
è 서브쿼리로 10번부서에 업무를 구한 뒤 메인쿼리에서 30번중에 10번과 같은 사원을 찾아서 출력시킴.
9. EMP 테이블에서 FORD와 업무도 월급도 같은 사원의 모든 정보를 출력하는 SELECT문을 작성하시오.
select *
from emp
where (job, sal) IN (
select job, sal
from emp
where ename = 'FORD')
and ename <> 'FORD';
è 다중열 서브쿼리로 ford의 업무와 월급을 구하고, 메인쿼리에서 업무와 같은 월급을
구하는데 단 본인은 제외시킨다.
10. EMP 테이블에서 업무가 JONS와 같거나 월급이 FORD이상인 사원의 정보를 이름,업무,부서번호,급여를 출력하는 SELECT문을
작성하시오. 단 업무별, 월급이 많은 순으로 출력하여라.
SELECT ename, job, deptno, sal
FROM emp
WHERE job = (
SELECT job
FROM emp
WHERE ename = 'JONES')
OR sal > (
SELECT sal
FROM emp
WHERE ename = 'FORD');
è 서브쿼리를 두개를 사용하여, 존과 포드에 업무와 월급을 각각 구한 뒤 or 연산으로 조건에 맞는
사람을 출력
11. EMP 테이블에서 SCOTT 또는 WARD와
월급이 같은 사원의 정보를 이름,업무,급여를 출력하는 SELECT문을 작성하시오.
SELECT ename, job, sal
FROM emp
WHERE sal IN (SELECT sal
FROM emp
WHERE ename = 'SCOTT' OR ename = 'WARD');
è 다중행 서브쿼리로 스캇과 워드에
월급을 각각 구한 뒤 같은 사람을 출력
12. EMP 테이블에서 CHICAGO에서 근무하는 사원과 같은 업무를 하는 사원의
이름,업무를 출력하는 SELECT문을 작성하시오.
SELECT ename, job
FROM emp
WHERE job = (SELECT dname
FROM dept
WHERE loc = 'CHICAGO');
è 서브쿼리로 dept테이블에서 시카고에서 사원에 업무를 구한 뒤 메인에서 같은 업무인사람을 찾아서 출력
13. EMP 테이블에서 부서별로 월급이 평균 월급보다 높은 사원을 부서번호,이름,급여를 출력하는 SELECT문을 작성하시오.
SELECT e.deptno, e.ename, e.sal
FROM emp e,
( SELECT deptno, TRUNC (AVG (sal), 0) AS sal
FROM emp
GROUP BY deptno
ORDER BY deptno) f
WHERE e.deptno = f.deptno
AND e.sal > f.sal
ORDER BY SAL;
è from절에서 서브쿼리를 만들고, 부서번호와 평균급여를 구한 뒤 where 절에서 부서번호와 급여가
더 높은사람을 찾아서 출력.
14. EMP 테이블에서 업무별로 월급이 평균 월급보다 낮은 사원을 부서번호,이름,급여를 출력하는 SELECT문을 작성하시오.
SELECT e.deptno, e.ename, e.sal
FROM emp e,
( SELECT deptno, TRUNC (AVG (sal), 0) AS sal
FROM emp
GROUP BY deptno
ORDER BY deptno) f
WHERE e.deptno = f.deptno
AND e.sal < f.sal
ORDER BY SAL;
è 13번 문제에서 e.sal과 f.sal 비교하는 부등호만 반대로 바꾸면 조건에 맞게
출력됩니다.
15. EMP 테이블에서 적어도 한명 이상으로부터 보고를 받을 수 있는 사원을 업무,이름,사원번호,부서번호를 출력하는
SELECT문을 작성하시오.
SELECT job, ename, empno, deptno
FROM emp
WHERE empno IN (SELECT mgr
FROM emp)
ORDER BY JOB;
è 서브쿼리로 mgr로 구한 뒤 한명이상이기 때문에 하나라도 같으면 해당하므로 IN으로
처리하여 출력
16. EMP 테이블에서 말단 사원의 사원번호,이름,업무,부서번호를 출력하는
SELECT문을 작성하시오.
SELECT empno, ename, job, deptno
FROM emp
WHERE job = 'CLERK'
ORDER BY empno;
è 조건에 사원인 clerk를 조건으로 검색하여 출력.
댓글 없음:
댓글 쓰기