문제를 풀어보자

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

휴일이 2022. 10. 20. 20:57

 

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