1. 서브쿼리

  • 단일행 서브쿼리: 결과가 1개 행 반환 → 비교 연산자(=, <, > 등) 사용 가능
  • 다중행 서브쿼리: 결과가 여러 행 반환 → 일반 비교 연산자 사용 불가, IN / ALL / ANY 사용
    ※ 다중행 비교 연산자(ALL, ANY)는 단일행 서브쿼리에도 사용 가능 단, 단일행 비교 연산자는 다중행 서브쿼리에 사용 불가!
  • 서브쿼리는 단일행 또는 복수행 비교 연산자와 함께 사용할 수 있다. (○)
  • 복수행 결과에 =, <=, >= 사용 가능? (✕) → IN, ALL, ANY 사용
  • 다중 칼럼 서브쿼리 → SQL Server는 지원하지 않는다. (✕)
  • 연관 서브쿼리는 주로 메인쿼리에 값을 제공하기 위한 목적? (✕) → 비연관 서브쿼리가 메인쿼리에 값 제공. 연관 서브쿼리는 메인쿼리 값을 받아 필터링
  • 뷰(VIEW)
    • 테이블 구조 변경 시 응용 프로그램도 변경해야 한다? (✕) → 독립성으로 불필요
    • 뷰 사용 장점: 독립성 / 편리성 / 보안성

2. 집합 연산자

  • UNION: 중복 행을 하나로 합쳐서 반환
  • UNION ALL: 중복 행도 그대로 모두 포함하여 반환
  • UNION 사용 시 각 집합에 GROUP BY 사용 가능 (o)
  • UNION 사용 시 각 집합에 ORDER BY 사용 가능? (x)
    → ORDER BY는 최종 결과 마지막 줄에 한 번만 사용 가능
  • INTERSECT 동치 변환 INTERSECT
    → NOT EXISTS (MINUS 변환)
    → IN (서브쿼리) → 중복 주의!
    → INNER JOIN → 중복 주의!
  • 순위 함수 RANK: 동순위 건너뜀 (1,1,3,3,5)
    DENSE_RANK: 동순위 안 건너뜀 (1,1,2,2,3)
    ROW_NUMBER: 무조건 고유 번호 (1,2,3,4,5)
    PERCENT_RANK: 0~1 사이 값
    CUME_DIST: 누적 분포, 0~1 사이 값
    NTILE(N): N등분 구간 번호 부여
    RATIO_TO_REPORT: 그룹 내 합계 대비 비율
    ※ 1,1,2,2,3,3,4,4,5,5 패턴 → NTILE(5)!
    ※ NTILE은 순위가 아닌 구간 번호 부여 (DENSE_RANK와 혼동 주의)

 


3. 그룹 함수

GROUPING SETS(A,B) = (A), (B)
ROLLUP(A,B) = (A,B), (A), ()
ROLLUP((A,B)) = (A,B), ()
CUBE(A,B) = (A,B), (A), (B), ()


4. 윈도우 함수

  • SUM + ORDER BY 있으면 → 누적합!
    SUM(급여) OVER (PARTITION BY 부서코드) → 부서 전체합
    SUM(급여) OVER (PARTITION BY 부서코드 ORDER BY 사원번호) → 부서 내 누적합
  • 윈도우 함수 처리로 결과 건수가 줄어든다? (x) → 결과 건수 변화 없음

5. TOP N 쿼리

  • TOP(N): 무조건 N행만 반환
  • TOP(N) WITH TIES: N위와 동점이면 함께 추가 출력 (ORDER BY 필수)

6. 계층형 질의와 셀프 조인

  • ORDER SIBLINGS BY: 형제 노드 사이 정렬 지정 구문 (o)
  • 순방향 전개: 부모 노드 → 자식 노드 방향 (o)
  • 루트 노드의 LEVEL 값은 0이다? (x) → LEVEL 값은 1

+ Recent posts