1. 계층 쿼리
- START WITH : 시작 점 지정
- CONNECT BY ~ PRIOR ~ : 진행 경로 설정
- ORDER SIBLINGS BY : 같은 레벨별 정렬 기준
- LEVEL : 루트부터 각 레벨 별 1씩 증가
- CONNECT_BY_ISLEAF : LEAF = 1, NON LEAF = 0
- CONNECT_BY_ROOT : 루트 데이터 출력
- CONNECT_BY_PATH : 전체 경로 표시
*CONNECT BY 절에서 Column <> 나온다면 연결된(하위혹은 상위) 데이터 비출력
*WHERE 절에서 Column <> 나온다면 그 관련 데이터만 비출력
2. 선분이력 끊기
- 월말 기준으로 선분을 끊는 경우
Select greatest (a.시작일자, b.시작일자) 시작일자, least (a.종료일자, b.종료일자) 종료일자
From 월도 a, 선분이력 b
Where b.시작일자 <= a.종료일자
and b.종료일자 >= a.시작일자; => greatest와 least 활용!
3.데이터 복제를 통한 소계 구하기
- dummy table (dual)를 통해서 Cartesian Product로 만듬
- Select b.no a.depno
From emp a, (Select rownum no from dual connect by level <= 2) b;
-> a테이블의 2배 만큼 출력 됨
=> Group By를 통해 소계를 만들 수 있음 -> ROLLUP 함수로 대체 가능!
'Oracle DB' 카테고리의 다른 글
쿼리 변환 (0) | 2021.04.03 |
---|---|
서브쿼리 / 집합연산 / Join - Using , On, Outer Join (0) | 2021.04.03 |
윈도우 함수 (0) | 2021.04.03 |
조인의 원리 및 활용 (0) | 2021.04.03 |
인덱스 구조 및 이해(2) (0) | 2021.04.03 |