일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 용어 정리
- Ecommerce
- Python
- bigquery
- 크로스셀링
- segmentation
- 맞춤 자바스크립트
- 맞춤 이벤트
- 상관계수
- API
- 이벤트 매개변수
- Ga
- git
- oracle
- Google Analytics
- SQL
- SQLD
- 후기
- tablueau
- 그로스해킹
- 통계
- DISTINCT
- sql 개발자
- It
- tableau
- 캐글
- 데이터 분석
- Kaggle
- pandas
- Funnel
- Today
- Total
녕녀기의 실험일지
[ Oracle ] start with와 connect by를 사용해 부모 노드 확인하기 본문
본문으로
안녕하세요. 녀기입니다.
죽지도 않고 또 왔습니다.
연습하다가
죄다 모르는 것 투성이라 계속 포스팅하네요!
이래서 사람은 연습이 중요한가 봅니다.
이번 포스팅은
부모 노드를 찾아가는 것인데,
뭐 여러 경우가 있습니다.
일단 제가 아는 것은
가장 상위 직급은 무엇인가?
요정도?
(자격증 셤에도 나왔던 것 같은데...)
분명히 공부할 때는 그렇구나!
하고 넘어갔었는데,
사용하려고 하니 기억 안 나더군요....
그나마 다행인건,
그런 것을 공부했었다!!
가 기억이 나서
검색을 할 수 있다는 점!!!
(오늘도 빛나는 교수님의 명언....)
다시는 잊지 않도록
기록을 남기겠습니다.
들어가시죠!!
START WITH, CONNECT BY
select n,
case when level=1 then 'Root'
when level=(
select max(level)
from bst
start with p is null
connect by prior n=p
) then 'Leaf'
else 'Inner'
end
from bst
start with p is null
connect by prior n=p
order by n asc
n이라는 컬럼과 p 라는 컬럼이 있습니다.
n 컬럼의 부모 노드를 표시해 놓은 것이 p 컬럼입니다.
가장 최상위 부모는 p 컬럼의 값이 null 입니다.
n | p |
1 | 2 |
3 | 2 |
6 | 8 |
9 | 8 |
2 | 5 |
8 | 5 |
5 | null |
n이 1인 데이터의 부모를 거슬러 올라가면
1 >> 2 >> 5
가 될 것입니다.
각 절을 하나씩 살펴 보면
- start_with : 계층 구조를 지칭할 데이터를 선언합니다.
- connect by : 계층 구조를 만들기 위해, 행 사이를 연결합니다.
start_with p = nulll
라고 조건을 설정하면,
p 값이 null인 데이터를 가장 계층이 높은 데이터로 취급하겠다는 것입니다.
그리고
connect by prior n=p
라고 조건을 설정해, n과 p가 같은 값들로 계층 구조를 만들겠다는 뜻입니다.
이렇게 계층 구조를 만들고 나면
'level' 이라는 컬럼이 생성되는데,
가장 최상위 값에 '1'이 부여됩니다.
위 코드를 실행하면
위와 같은 결과가 도출되는 것을 확인할 수 있습니다~~
진짜 머리 터지겠네요.
sql 공부가 더 중요한 줄 알았으면
파이썬 공부 안 하고 sql만 했을텐데.....
시간만 버린 느낌....
취직해서도 공부해야 하는 건 똑같겠지만,
이렇게 불투명한 상태에서 언제까지 해야할지....
(정규직으로 돈 벌고 싶다.)
갑자기 우울해졌으니 도망가겠습니다.
여러분은 힘내셨으면 좋겠습니다~
'-- Data -- > - SQL -' 카테고리의 다른 글
[ SQL ] Oracle, MySQL, BigQuery에서 같은 기능, 다른 함수 (0) | 2024.08.19 |
---|---|
[ Oracle ] ORDER BY + CASE를 사용해 조건에 따른 정렬 순서 정하기 (0) | 2024.02.27 |
[ Oracle ] 삼각형 분류하기 (0) | 2024.02.22 |
[ Oracle ] NVL, LAG, LEAD, INTERVAL, ROW_NUMBER를 사용해 프로젝트 시작 날짜와 끝난 날짜 출력 (0) | 2024.02.21 |
[ BigQuery ] SQL 쿼리문을 Looker Studio 연동하기 (0) | 2024.02.07 |