21 TEMP의 자료에서 ROWNUM을 채취해 값이 5와 10 사이에 있는 행의 ROWNUM, 사번, 이름을 조회하시오
SELECT NUM, EMP_ID, EMP_NAME
FROM ( SELECT ROWNUM NUM, EMP_ID, EMP_NAME FROM TEMP)
WHERE NUM > 4 AND NUM <11
22
INSERT INTO TDEPT ( DEPT_CODE, DEPT_NAME, PARENT_DEPT, USE_YN, AREA, BOSS_ID ) VALUE
(‘000000’, ‘사장실’, ‘ ’, ‘Y’, ‘서울’, ‘ ’)
위의 구문을 COMMIT 하고
기존 테이블에 최상위 부서로 지정되어있는 경영지원 부서를 사장실로 변경한다
UPDATE TDEPT
SET PARENT_DEPT = '000000'
WHERE DEPT_CODE=PARENT_DEPT;
23 사장실을 기준으로 계층구조 전개를 하여 출력하시오 (LPAD를 활용)
SELECT LPAD(DEPT_NAME, LEVEL*12,' ')AS 부서이름
,DEPT_CODE
,PARENT_DEPT
FROM TDEPT
START WITH DEPT_CODE='000000'
CONNECT BY PRIOR DEPT_CODE=PARENT_DEPT
24 CA0001의 하위 부서를 모두 제거 하고 계층구조 전개를 하여 출력하시오 (LPAD를 활용)
SELECT LPAD(DEPT_NAME, LEVEL*12,' ')AS 부서이름, DEPT_CODE, PARENT_DEPT
FROM TDEPT
CONNECT BY PRIOR DEPT_CODE=PARENT_DEPT
AND DEPT_CODE <> ‘CA0001’
START WITH DEPT_CODE='000000'
CONNECT 와 조건절의 순서를 어디에 배치하는가에 따라 그 느낌도 구조도 달라진다
"CONNECT BY PRIOR DEPT_CODE=PARENT_DEPT"
-> 왼쪽의 구문은 CONNECT가 일어나고 그다음
"AND DEPT_CODE <> ‘CA0001’"
-> CONNECT에 대한 조건절을 하나 더 추가하는 느낌으로 CONNECT가 생성이되고 나서 조건절에 대한 계층에 의미를 부여한다 그래서 CA0001에 해당하는 하위부서 까지 모두 제거된다
============================================================================
SELECT LPAD(DEPT_NAME, LEVEL*12,' ')AS 부서이름, DEPT_CODE, PARENT_DEPT
FROM TDEPT
WHERE DEPT_CODE <> ‘CA0001’
CONNECT BY PRIOR DEPT_CODE=PARENT_DEPT
START WITH DEPT_CODE='000000'
테이블의 조건절로 사용되며 테이블에서 먼저 CA0001을 제거한 후
WHERE DEPT_CODE <> ‘CA0001’
-> CONNECT를 실시하게 된다 그래서 CA0001만 없어지고
CONNECT BY PRIOR DEPT_CODE=PARENT_DEPT
-> CA0001의 하위부서는 그대로 남겨지게된다
25 어느 한 사원이 영업2(CD0001)부서에 근무하고 있다 자기의 상위 부서를 출력하시오
(계층구조 전개로출력)
SELECT LEVEL, LPAD(DEPT_NAME, LEVEL*12,' ') AS 부서이름 ,DEPT_CODE ,PARENT_DEPT
FROM TDEPT
START WITH DEPT_CODE = 'CD0001'
CONNECT BY PRIOR PARENT_DEPT=DEPT_CODE
26 부서별로 부서장(BOSS_ID)과 성명(EMP_ID)를 부서의 전개에 의해 도출된 결과와 같은 형식으로 출력하시오
SELECT A.LEV, A.EMP_NAME, B.BOSS, B.DEPT_CODE, B.DEPT_NAME
FROM TEMP A,
(SELECT LEVEL LEV, LPAD(BOSS_ID, LEVEL*12,' ') BOSS
,DEPT_CODE, DEPT_NAME
FROM TDEPT
START WITH DEPT_CODE = '000000'
CONNECT BY PRIOR DEPT_CODE= PARENT_DEPT
) B
WHERE A.EMP_ID(+)=B.BOSS
'IT_Web > Oracle' 카테고리의 다른 글
Oracle 부등호 조인 (0) | 2020.03.08 |
---|---|
Oracle WINDOW 함수, 분석함수, 누적급여합계, 최고금액, 전일매출차액 출력 (0) | 2020.03.08 |
Oracle WINDOW 함수 일자별(아이템별) 판매누적, 3일 평균액, 전 사원번호 출력하기 (0) | 2020.03.08 |
Oracle DECODE, 열 데이터를 행으로 변경하기, 서브쿼리 연습문제 (0) | 2020.02.27 |
Oracle ROWNUM, 집계함수, DECODE, OUTER JOIN 연습문제 (0) | 2020.02.27 |