ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] Level, max(lavel) 사용법, SQLD문제
    Database/SQL (oracle, mysql) 2019. 6. 5. 15:05

    sqld문제중 단답형 2번 정리

    Level

    max(Level)

    max(Level)이 들어갈 자리에 *을 넣고 emp 테이블로 조회를 해보았다.

    (* 덤프 파일은 첨부)

     

     

     

    결과는 위와 같다.

    레벨은 오른쪽 사진과 같이 1 부터 4까지의 숫자가 나오는데 어떤 기준으로 레벨을 나누는지 이해할수 없었다.

    select *
    from scott.emp
    // emp테이블에서
    start with mgr is null
    // mgr이 null일때 시작한다. 
    connect by prior empno=mgr;
    // for문과 비슷하지.empno와 mgr이 같은지 계속 비교

     하나씩 뜯어본다면

    KING의 MGR 은 NULL이다  -> 1

     

    JONES의 MGR은 7839이다.

    사번 7839(KING)의 MGR은 NULL이다 ->2

     

    SCOTT의 MGR은 7566이다.

    사번 7566(JONES)의 MGR은 KING이다,

    KING의 MGR은 NULL이다. -> 3

     

    ADAMS는 같은 식으로 SCOTT, JONES, KING 앞에 3명을 거슬러 올라간다. -> 4

     

    FORD의 MGR은 7566이다.

    JONES의 MGR은 KING이다.

    KING의 MGR은 NULL이다. ->3

     

    ... 

    이런식으로 계층형으로 위에 몇번째(LEVEL)까지 거슬러 올라가는가를 구하는 것이다.

    제일 높은 LEVEL은 4이므로, MAX(LEVEL)은 4이다.

    ( 내 위에 상사가 많을수록 나는.. 하위(4) 레벨이다.

         하지만 내가 최고 레벨(1) 상사라면 나머지 직원들을 맘껏 갈굴(?) 수 있다.)

     

    조금 쉽게 설명해 본다면 답변형 게시판을 생각하면 된다.

     

    원글(root 글쓴이가 LEVEL 0)
     - 답글1 (LEVEL 1)
     - 답글2 (LEVEL 1)
      —답글2의 답글1(LEVEL 2)
      ——답글2의 답글1의 답글1(LEVEL 3)
      —답글2의 답글2(LEVEL 2)

    scottTable.dmp
    0.01MB

     

    반응형

    'Database > SQL (oracle, mysql)' 카테고리의 다른 글

    [Oracle] 오라클 missing right parenthesis 에러  (0) 2019.08.12
    [SQLD] SQLD 요약정리  (0) 2019.07.15
    [SQL] rollup과 cube  (0) 2019.06.04
    [ SQL ] 패키지 선언  (0) 2019.06.04
    [SQL] PL/ SQL  (0) 2019.05.31

    댓글

Designed by Tistory.