데이터베이스/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