[SQLD] 2-2. SQL 활용

0-x-14·2025년 3월 6일

SQLD

목록 보기
4/5




서브쿼리 (Subquery)




스칼라 서브쿼리


  • 주로 SELECT 절에 위치
  • 컬럼이 올 수 있는 대부분 위치에 사용 가능
    • FROM 절은 불가능 (테이블명이 오는 위치라)

  • 반드시 하나의 값만 반환해야 함
    • 그렇지 않은 경우 에러 발생



인라인 뷰


  • FROM 절테이블명이 올 수 있는 위치에 사용 가능



중첩 서브쿼리

  • WHERE 절, HAVING 절에 사용 가능

메인쿼리와의 관계에 따라

  • 비연관 서브쿼리
    • 메인쿼리와 관계를 맺고 있지 X
    • 즉, 서브쿼리 내에 메인쿼리 컬럼 X
  • 연관 서브쿼리
    • 메인쿼리와 관계 O

반환하는 데이터 형태에 따라

유형설명
단일 행(Single Row) 서브쿼리- 서브쿼리가 1건 이하의 데이터를 반환
- 단일 행 비교 연산자와 함께 사용
예) =, <, >, <=, >=, <>
다중 행(Multi Row) 서브쿼리- 서브쿼리가 여러 건의 데이터를 반환
- 다중 행 비교 연산자와 함께 사용
예) IN, ALL, ANY, SOME, EXISTS
다중 컬럼(Multi Column) 서브쿼리- 서브쿼리가 여러 컬럼의 데이터를 반환










  • 뷰의 특징
    • 보안성
    • 독립성
    • 편리성









집합 연산자


유형설명
UNION ALL합집합, 중복 O
UNION합집합, 중복 X (중복 제거되고 한 줄로 출력됨)
INTERSECT교집합, 중복 X
MINUS/EXCEPT차집합, 중복 X



  • UNION은 UNION ALL보다 성능상 불리함
    • 중복된 행 제거하는 과정 거치므로

  • INTERSECT에서 같은 컬럼에 서로 다른 ALIAS를 부여했을 경우, 헤더값은 첫 번째 쿼리를 따라감









그룹 함수


ROLLUP


  • 소그룹 간의 소계 및 총계를 계산하는 함수
  • 총합계!!!!

유형설명
ROLLUP(A)- A로 그룹핑
- 총합계
ROLLUP(A,B)- A,B로 그룹핑
- A로 그룹핑
- 총합계
ROLLUP(A,B,C)- A,B,C로 그룹핑
- A,B로 그룹핑
- A로 그룹핑
- 총합계

  • ROLLUP(A,B) != ROLLUP(B,A)

  • ROLLUP((A,B),C)
    • 중간 NULL이 마지막 한 칸
  • ROLLUP(A,(B,C))
    • 중간 NULL이 뒤에 두 칸



CUBE


  • 조합할 수 있는 모든 소그룹에 대해 소계 및 총계 계산
    • 번외) GROUP BY는 일방향으로 그룹핑

  • ROLLUP(A,B)
    • ROLLUP은 중간 부분에서 A에 대한 총합계만 구함
  • CUBE(A,B)
    • CUBE는 ROLLUP과 달리 중간부분에서 B에 대한 총합계도 구함



CUBE 연산그룹화 방식
CUBE (A)- A로 그룹핑
- 총합계
CUBE (A, B)- A, B로 그룹핑
- A로 그룹핑
- B로 그룹핑
- 총합계
CUBE (A, B, C)- A, B, C로 그룹핑
- A, B로 그룹핑
- A, C로 그룹핑
- B, C로 그룹핑
- A로 그룹핑
- B로 그룹핑
- C로 그룹핑
- 총합계



GROUPING SETS


  • 특정 항목에 대해
  • 마지막에 ( )가 없다면 총합계 계산 X
  • ROLLUP, CUBE 사용 가능 (사용시 총합계 계산 O)



GROUPING SETS 연산그룹화 방식
GROUPING SETS (A, B)- A로 그룹핑
- B로 그룹핑
- 총합계X
GROUPING SETS (A, B, ( ))- A로 그룹핑
- B로 그룹핑
- 총합계
GROUPING SETS (A, ROLLUP(B))- A로 그룹핑
- B로 그룹핑
- 총합계
GROUPING SETS (A, ROLLUP(B, C))- A로 그룹핑
- B, C로 그룹핑
- B로 그룹핑
- 총합계
GROUPING SETS (A, B, ROLLUP(C))- A로 그룹핑
- B로 그룹핑
- C로 그룹핑
- 총합계



  • ROLLUP
    • 인수 순서에 따라 결과 달라짐
  • CUBE, GROUPING SETS
    • 인수 순서 영향 X



GROUPING


  • 소계(합계)된 열은 1, 아니면 0

0개의 댓글