[SQL] 계층형 질의문 1 - start with, connect by

·2025년 7월 11일
0

SQL

목록 보기
104/126


문제1. 서열번호, 사원번호, 이름, 관리자 번호, 직업을 출력하시오

select level, ename, sal, job
 from emp
 start with ename='KING'    -- 첫번째 서열을 지정
 connect by prior empno = mgr;  -- 여기서 empno가 부모 키, mgr이 자식 키 역할
 								-- 부모 키 = 자식 키

start with ...
connect by prior ...

여기서 empno와 mgr의 순서가 바뀌면 X


문제2. level 에 따라서 앞에 공백을 넣어서 서열이 구분되게 하시오

select rpad(' ',level*2) || ename, level, job
  from emp
  start with ename='KING'
  connect by prior empno = mgr;

문제3. 이름이 BLAKE 인 사원을 서열 1위로하고 서열, 이름, 월급을 출력하시오. 위에 처럼 앞에 공백도 넣어서 서열이 구분되게하시오

select rpad(' ', level*2) || ename, level, sal
  from emp
  start with ename='BLAKE'
  connect by prior empno = mgr;

💡 실행순서: from - start with - connect by - select


문제4. 위의 결과를 다시 출력하는데 월급이 1500 이상인 사원들만 출력하시오

select rpad(' ', level*2) || ename, level, sal
  from emp
  where sal >= 1500
  start with ename='BLAKE'
  connect by prior empno = mgr;
-- 실행계획 보는 코드
SELECT * FROM table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));

💡 실행순서: from - start with - connect by - where - select
설명: start withconnect by를 실행한 후에 where절이 맨 마지막에 실행됨


문제5. hr.employees 에서 서열, 사원이름, 직업을 출력하시오

select level, first_name, last_name, job_id, manager_id
  from hr.employees
  start with manager_id is null
  connect by prior employee_id = manager_id;

manager_id가 null값인 컬럼이 있어서
start with manager_id is null로 써줌

0개의 댓글