문제 1
id | col1 | col2 | col3 |
가 | A | 1 | |
나 | B | A | 2 |
다 | C | A | 3 |
라 | D | B | 4 |
select count(*)
from T
where col3 <> 2
start with col3 = 4
connect by col1 = prior col2;
[풀이]
부모 = prior 자식 / prior 자식 = 부모, 자식과 같은 부모를 연결해라
부모 = prior 자식 이므로 col1이 부모, col2가 자식이므로
col2와 같은 col1을 연결해라
col3 = 4 부터 시작해라
col1 col2 col3
lv1. 4
lv2. b a 2
lv3. a 1
근데 col3<>2이므로 lv2. 를 제외함
select count(*) 하므로 답은 2
문제 2
c1 | c2 | c3 |
1 | A | |
2 | 1 | B |
3 | 1 | C |
4 | 2 | D |
select c1, c2, c3
from T
connect by prior c1 = c2
start with c1 = 1
order sibling by c1 desc;
[풀이]
prior 자식 = 부모, 자식과 같은 부모연결
c1이 자식, c2가 부모, c1 = 1 시작
c1 c2 c3
lv1. 1 a
lv2. 2 1 b
3 1 c
lv3. 4 2 d
그런데 order sibling by c1 desc 이므로
c1 c2 c3
lv1. 1 a
lv2. 3 1 c
2 1 b
lv3. 4 2 d
이와같이 lv2에서 c1 기준으로 desc 해준다
문제 3
c1 | c2 | c3 |
1 | king | |
2 | 1 | john |
3 | 2 | scott |
select c3 from T
where c1 <> 2
connect by c1 = prior c2
start with c1 = 2;
부모 = prior 자식, 자식과 같은 부모 연결
c1 = 2 부터 시작, c1이 부모, c2가 자식
c1 c2 c3
lv1. 2 1 john
lv2. 1 king
'자격증 > SQLD' 카테고리의 다른 글
제 46회 sqld 시험 결과 (0) | 2022.09.23 |
---|---|
집계함수 (0) | 2022.07.29 |
delete, truncate, drop 차이 (0) | 2022.07.29 |
엔터티, 속성 (0) | 2022.07.29 |
댓글