
순서 잘 기억하자
GRANT ON TO
GRANT + 권한 줄 기능
ON + 권한 줄 테이블
TO + 권한을 받는 대상



처음에 3이상인 그룹의 갯수를 묻는줄 알고 1이라 했다가 틀림...
위에껀 행 수를 물어본거라 3이 맞고 만약 처음 내 답이 맞게 하려면
서브쿼리로 SELECT ID를 했어야함.
그룹으로 지정한 ID열을 가져와야 그룹의 갯수를 물어보는 것이 되는 것

이건 꽤 고난도 문제...
문제가 물어보는것은 결국 루트노드를 어디로 정할거냐 라는거다.
RESULT에 따르면 SIBLING BY C3 DESC에 따라
C3의 순서가 ACBD가 되었다.
이 말은 B와 C는 같은 계층에 있었다는 말이된다.
그럼 이 정보를 가지고 역추적해보자
루트 노드가 어디여야
A
├── C
└── B
└└── D
이런 구조가 될 수 있을까
답은 C2가 NULL인 TAB1의 첫번째 행이 루트노드가 되어야 이런 구조가 될 수 있다는 것이다.
C1이 1인 루트노드에서 시작해야 A가 가장 처음 오고 그 다음 C1과 C2가 1로 이어져 있는 B와 C가 같은 계층에 위치해있게 되고 DESC로 내림차순 정렬이 된다. 마지막으로 B가 있는 행의 2와 연결되어 있는
D가 위치하게 되면서
최종적으로 결과값처럼 출력되는 것이다.
그래서 답은 C2가 NUll이어야하기에 IS NULL이 되는 것이다.

이 문제는 쉬운 문제
결과값의 첫번째로 김사원이 왔으므로 처음 김사원이 오려면 MANAGER이 NULL인 행이 루트 노드가 되어야한다. 그렇기에 START WITH MANAGER (?)의 괄호안에는 IS NULL이 와야한다.

ROLLUP의 대표적 형태
((구매고객, 구매월), 구매고객) 이런식으로 되어있으면 그건 GROUPING SETS

NTITLE(3)으로 가능한 3개 그룹으로 끊어서 나누는데 최대한 균등해야함 그 말은 3 3 1이런식으로 나누면 안된다는말 앞에서 부터 분배를 하니까 3 2 2 가 되게 됨
그 다음 이걸 그룹으로 묶어서 ORDER BY 1에 의해 COL1을 기준으로 번호를 매기면
1
1
1
2
2
3
3
이런 순서가 될 거임
그래서 ㄱ에 들어갈건 1
ㄴ은 3이 됨.
ps. WHERE 1=1은 무시해도 됨 그냥 항상 참이다라는 뜻이고 and절 붙히려고 사용한다는데 여기서는 의미없음