-
[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)반응형'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