- 출처 : 네이버 지식인 -
1) EMP와 DEPT TABLE을 JOIN하여 부서 번호, 부서명, 이름, 급여를 출력하라.
SELECT D.DEPTNO, D.DNAME, E.ENAME, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
2)이름이 'ALLEN'인 사원의 부서명을 출력하라.
SELECT E.ENAME, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.ENAME = 'ALLEN'
3)DEPT Table에 있는 모든 부서를 출력하고, EMP Table에 있는 DATA와 JOIN하여 모든 사원의 이름, 부서번호, 부서명, 급여를 출력하라.
SELECT E.ENAME, D.DEPTNO, D.DNAME, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO
4)EMP Table에 있는 EMPNO와 MGR을 이용하여 서로의 관계를 다음과 같이 출력하라.
SMITH의 매니저는 FORD이다.
SELECT E.ENAME || '의 매니저는' || M.ENAME || '이다.'
FROM EMP E, EMP M
WHERE E.MGR = M.EMPNO
AND E.ENAME = 'SMITH'
5)'ALLEN'의 직무와 같은 사람의 이름, 부서명, 급여, 직무를 출력하라.
SELECT E.ENAME, D.DNAME, E.SAL, E.JOB
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND JOB = (SELECT JOB
FROM EMP
WHERE ENAME = 'ALLEN')
6)'JONES'가 속해있는 부서의 모든사람의 사원번호, 이름, 입사일, 급여를 출력하라.
SELECT EMPNO, ENAME, HIREDATE, SAL
FROM EMP
WHERE DEPTNO = (SELECT DEPTNO
FROM EMP
WHERE ENAME = 'JONES')
7)전체 사원의 평균임금보다 많은 사원의 사원번호, 이름, 부서명, 입사일, 지역, 급여를출력하라.
SELECT E.EMPNO, E.ENAME, D.DNAME, E.HIREDATE, D.LOC, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND SAL > (SELECT AVG(SAL)
FROM EMP)
8)10번 부서의 사람들중에서 20번 부서의 사원과 같은 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일, 지역을 출력하라.
SELECT E.EMPNO,
E.ENAME,
D.DNAME,
E.HIREDATE,
D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.DEPTNO = 10
AND E.JOB IN (SELECT JOB
FROM EMP
WHERE DEPTNO = 20)
9)10번 부서 중에서 30번 부서에는 없는 임무를 하는 사원의 사원번호, 이름, 부서명, 입사일, 지역을 출력하라.
SELECT E.EMPNO, E.ENAME, D.DNAME, E.HIREDATE, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.DEPTNO = 10
AND E.JOB NOT IN (SELECT JOB
FROM EMP
WHERE DEPTNO = 30)
10)10번 부서와 같은 일을 하는 사원의 사원번호, 이름, 부서명, 지역, 급여를 급여가 많은 순으로 출력하라.
SELECT E.EMPNO, E.ENAME, D.DNAME, D.LOC, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.DEPTNO != 10
AND E.JOB IN (SELECT JOB
FROM EMP
WHERE DEPTNO = 10)
ORDER BY E.SAL DESC
11)'MARTIN'이나 'SCOTT'의 급여와 같은 사원의 사원번호, 이름, 급여를 출력하라.
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE SAL IN (SELECT SAL
FROM EMP
WHERE ENAME IN ('MARTIN', 'SCOTT'))
12)급여가 30번 부서의 최고 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE SAL > (SELECT MAX(SAL)
FROM EMP
WHERE DEPTNO = 30)
13)급여가 30번 부서의 최저 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE SAL > (SELECT MIN(SAL)
FROM EMP
WHERE DEPTNO = 30)
10번 문제중에 부서번호 10이아니다라고 하셨는데 수정바랍니다^^
“10번부서와 같은” 이니까 일부러 10번 부서 소속인 사람들은 제외시킨게 아닐까요^^?
SQL 오랜만에 해보니까 재미있네요.