코딩 연습장/데이터베이스(DB)
데이터베이스 8장 연습문제
Do아
2021. 3. 17. 00:51
728x90
2021/03/16(화)
문제1) 급여(SAL)가 2000초과인 사원들의 부서 정보, 사원 정보를 오른쪽과 같이 출력해 보세요
(단 SQL-99 이전 방식과 SQL-99 방식을 각각 사용하여 작성하세요).
문제2) 오른쪽과 같이 각 부서별 평균 급여, 최대 급여, 최소 급여, 사원수를 출력해 보세요(단 SQL-99 이전 방식과 SQL-99 방식을 각각 사용하여 작성하세요).
문제3) 모든 부서 정보와 사원 정보를 오른쪽과 같이 부서 번호, 사원 이름순으로 정렬하여 출력해 보세요(단 SQL-99 이전 방식과 SQL-99 방식을 각각 사용하여 작성하세요).
문제4)다음과 같이 모든 부서정보, 사원 정보, 급여 등급 정보, 각 사원의 직속 상관의 정보를 부서 번호, 사원번호 순서로 정렬하여 출력해보세요(단 SQL-99 이전 방식과 SQL-99 방식을 각각 사용하여 작성하세요).
내 풀이
문제1)
WHERE문을 이용한 방식
SELECT E.DEPTNO, DNAME, EMPNO, ENAME, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND SAL>2000
ORDER BY DEPTNO, SAL;
JOIN문을 사용한 방식
SELECT DEPTNO, DNAME, EMPNO, ENAME, SAL
FROM EMP NATURAL JOIN DEPT
WHERE SAL>2000
ORDER BY DEPTNO, SAL;
문제2)
WHERE문을 이용한 방식
SELECT E.DEPTNO, DNAME, TRUNC(AVG(SAL)) AS AVG_SAL,
MAX(SAL) AS MAX_SAL, MIN(SAL) AS MIN_SAL, COUNT(*) AS CNT
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
GROUP BY E.DEPTNO, DNAME;
JOIN문을 사용한 방식
SELECT DEPTNO, DNAME, TRUNC(AVG(SAL)) AS AVG_SAL,
MAX(SAL) AS MAX_SAL, MIN(SAL) AS MIN_SAL, COUNT(*) AS CNT
FROM EMP NATURAL JOIN DEPT
GROUP BY DEPTNO, DNAME;
문제3)
WHERE문을 이용한 방식
SELECT D.DEPTNO, DNAME, EMPNO, ENAME, JOB, SAL
FROM EMP E, DEPT D
WHERE D.DEPTNO = E.DEPTNO(+)
ORDER BY E.DEPTNO, ENAME;
JOIN문을 사용한 방식
SELECT DEPTNO, DNAME, EMPNO, ENAME, JOB, SAL
FROM EMP NATURAL RIGHT OUTER JOIN DEPT
ORDER BY DEPTNO, ENAME;
문제4)
WHERE문을 이용한 방식
SELECT D.DEPTNO, D.DNAME,E1.EMPNO, E1.ENAME, E1.MGR, E1.SAL, E1.DEPTNO AS DEPTNO_1,
LOSAL, HISAL, GRADE,E2.EMPNO AS MGR_EMPNO, E2.ENAME AS MGR_ENAME
FROM EMP E1, EMP E2, DEPT D, SALGRADE S
WHERE D.DEPTNO = E1.DEPTNO(+) AND
E1.MGR = E2.EMPNO(+) AND
E1.SAL BETWEEN S.LOSAL(+) AND S.HISAL(+)
ORDER BY D.DEPTNO, EMPNO;
JOIN문을 사용한 방식
SELECT D.DEPTNO, D.DNAME, E1.EMPNO, E1.ENAME, E1.MGR, E1.SAL, E1.DEPTNO AS DEPTNO_1,
LOSAL, HISAL, GRADE, E2.EMPNO AS MGR_EMPNO, E2.ENAME AS MGR_ENAME
FROM EMP E1 FULL OUTER JOIN EMP E2 ON(E2.EMPNO = E1.MGR)
RIGHT OUTER JOIN DEPT D ON(D.DEPTNO = E1.DEPTNO)
FULL OUTER JOIN SALGRADE S ON(E1.SAL BETWEEN S.LOSAL AND S.HISAL)
ORDER BY D.DEPTNO, E1.EMPNO;
728x90