본문 바로가기

DB

- 2 일차 SQL 과제 –

-     2 일차 SQL 과제

-      

1.     사원 테이블에서 각 사원에 부서명을 아래 예제처럼 출력하세요
(
사원, 부서 테이블 조인 시 부서가 없는 사원은 출력 안함)
ex)
정렬은 부서명(DNAME), 사원명(ENAME) 오름차순

 

SELECT dname,empno, ename

FROM emp e JOIN dept d

ON e.deptno = e.deptno

ORDER BY dname ASC;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.    사원 테이블에서 각 사원에 부서명을 아래 예제처럼 출력하세요
--(
사원, 부서 테이블 조인 시 부서가 없는 사원도 출력)

사원이 없는 부서도 출력
ex)
정렬은 부서명(DNAME), 사원명(ENAME) 오름차순

  


 

3.    부서 위치가 'DALLAS', 'CHICAGO' 곳에 근무하는 사원 정보 아래
예제처럼 출력하세요

ex) 정렬은 부서위치(LOC) 내림차순, 사원명(ENAME) 오름차순

  

 

SELECT loc,LOWER(loc), empno,ename

FROM emp e JOIN dept d

ON e.deptno = d.deptno

WHERE LOC IN ('DALLAS','CHICAGO')

ORDER BY loc DESC, ename ASC;

 

대소문자를 모를 때

WHERE loc IN (dallas,chicago)

 

요것도 가능

SELECT loc, LOWER(loc), empno,ename

FROM emp e JOIN dept d

ON e.deptno = d.deptno

--WHERE LOC IN ('DALLAS','CHICAGO')

--WHERE LOWER(loc) IN (dallas,chicago)

WHERE INITCAP(loc) IN('Dallas','Chicago')

ORDER BY loc DESC, ename ASC;

 

4.    부서별 최고 급여(SAL) 금액을 아래 예제처럼 출력하세요

ex) 부서 없는 사원은 제외

  

SELECT d.deptno

             ,MAX(sal)

FROM emp e JOIN dept d

ON e.deptno = d.deptno

GROUP BY d.deptno;

 

 

SELECT deptno,MAX(sal)

FROM emp

WHERE deptno IS NOT NULL

GROUP BY deptno

ORDER BY deptno ASC

 

 

5.    부서별 최고 급여(SAL) 금액을 받는 사원 정보를 아래 예제처럼 출력하세요

ex) 부서 없는 사원은 제외

  

 

 

SELECT d.deptno, empno, ename,sal

            

FROM emp e JOIN (SELECT deptno,MAX(sal) AS MAXSAL

                               FROM emp

                               GROUP BY deptno

                            ) d

ON e.deptno = d.deptno

WHERE sal = MAXSAL

ORDER BY d.deptno;

또는


SELECT deptno
            , sal
            , empno
            , ename
            , job   
FROM emp
WHERE (deptno, sal ) IN (     --여기에서는 값이 2개가 리턴되므로 =연산자는 쓰지 못한다. 그러므로 IN이라는 연산자를 써줘야 한다.                               
                               SELECT e.deptno,MAX( sal)
                               FROM emp e JOIN dept d
                               ON e.deptno = d.deptno
                               GROUP BY e.deptno
                               --ORDER BY e.deptno ASC;  (정렬은 마지막에 다 끝나고 정렬해야 한다. )
                               )
ORDER BY deptno ASC;




'DB' 카테고리의 다른 글

DB 4일차 오전  (0) 2010.08.26
- 3 일차 SQL 과제 –  (0) 2010.08.25
DB 3일차 오전  (0) 2010.08.25
DB 2일차 오전  (0) 2010.08.24
- 1 일차 SQL 과제 –  (0) 2010.08.23