본문 바로가기
문제를 풀어보자

ORACLE) Do it! 오라클 8강 연습문제

by 휴일이 2022. 10. 20.

 

1)

SAL이 2000초과인 사원들의

부서 정보, 사원 정보를 오른쪽과 같이 출력하세요

 

SELECT E.DEPTNO, D.DNAME, E.EMPNO, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO AND E.SAL>2000
;

 

결과

 

 

2)

각 부서별 평균 급여, 최대 급여, 사원 수를 출력하세요

 

SELECT D.DEPTNO, D.DNAME, MAX(E.SAL), SUM(E.SAL), TRUNC(AVG(E.SAL)),COUNT(*)
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
GROUP BY D.DEPTNO, D.DNAME
;

배운 거 대로 하면 이렇게 쓰는 게 맞는데

 

아빠한테 물어보니까 밑에처럼 써줌

SELECT D.DEPTNO, MAX(D.DNAME) AS DNAME, MAX(E.SAL), SUM(E.SAL), TRUNC(AVG(E.SAL)),COUNT(*)
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
GROUP BY D.DEPTNO
;

이것도 답이 맞긴 하다

GROUP BY로 D.NAME을 안 묶어줬으니까 저렇게 MAX(D.DNAME)으로 감싸면 출력된다고 하길래

왜 그러는 거야??했더니 아빠도 모른댄다 그냥 하면 된다고...;;;;;

 

 

어쨌든 결과

 

 

 

 

3)

모든 부서 정보, 사원 정보를 오른쪽과 같이

부서번호, 사원 이름 순으로 정렬하여 출력해보세요

 

 

SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.JOB, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO
ORDER BY E.DEPTNO, D.DNAME;

 

결과

 

D.DEPTNO을 기준으로 아우터 조인(??) 해줘야

NULL이어도 출력이 된다

 

 

 

728x90