데이터베이스/SQL
[SQLD] SQL 활용 (3) - Top-N 쿼리, 셀프 조인, 계층 쿼리
qkzkdo
2023. 8. 24. 15:04
728x90
06 Top-N 쿼리
ROWNUM
Oracle의 ROWNUM은 슈도 컬럼(Pseudo Column)이다. Pseudo는 사전적 의미로 '가짜'라는 뜻을 가지 있다.
ROWNUM은 실제로는 존재하지 않는 가짜 컬럼이라고 대답할 수 있다.
ROWNUM은 항상 < 조건이나 <= 조건으로 사용해야 한다.
윈도우 함수의 순위 함수
앞 절에 나왔던 윈도우 함수의 순위 함수를 이용하여 Top-N 쿼리를 작성할 수 있다.
- ROW_NUMBER
- RANK
- DENSE_RANK
07 셀프 조인
셀프 조인은 말 그대로 나 자신과의 조인이다. FROM 절에 같은 테이블이 두 번 이상 등장하기 때문에 혼란을 막기 위해 ALIAS를 반드시 표기해주어야 한다.
08 계층 쿼리
테이블에 계층 구조를 이루는 컬럼이 존재할 경우 계층 쿼리를 이용해서 데이터를 출력할 수 있다.
- LEVEL
현재의 DEPTH를 반환한다. 루트 노드는 1이 된다. - SYS_CONNECT_BY_PATH (컬럼, 구분자)
루트 노드부터 현재 노드까지의 경로를 출력해주는 함수이다. - START WITH
경로가 시작되는 루트 노드를 생성해주는 절이다. - CONNECT BY
루트로부터 자식 노드를 생성해주는 절이다. 조건에 만족하는 데이터가 없을 때까지 노드를 생성한다. - PRIOR
바로 앞에 있는 부모 노드의 값을 반환한다.
그 밖에 계층 쿼리에서 사용할 수 있는 항목
- CONNECT_BY_ROOT 컬럼
루트 노드의 주어진 컬럼 값을 반환한다. - CONNECT_BY_ISLEAF
가장 하위 노드인 경우 1을 반환하고 그 외에는 0을 반환한다.
출처 : 정미나. 「유선배 SQL개발자(SQLD) 과외노트」. (주)시대교육. 2023
728x90