SQLD 자격증 정리

[SQLD] SQL활용 - 서브쿼리, 그룹 합수

sjoo 2021. 7. 27. 21:01

서브쿼리

- 서브쿼리

하나의 SQL문 안에 포함되어 있는 또 다른 SQL문

서브쿼리는 괄호를 감싸서 사용

서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능

서브쿼리에서는 ORDER BY 사용 불가

 

 

동작하는 방식에 따른 분류

Un-Correlated(비연관) 서브쿼리 - 서브쿼리가 메인쿼리 컬럼을 가지고 있지 않은 형태
- 메인쿼리에 값을 제공하기 위한 목적
Correlated(연관) 서브쿼리 - 서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태
- 메인쿼리가 먼저 수행되어 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인하고자 할 때 사용

 

반환되는 데이터 형태에 따른 분류

single row 서브쿼리(단일 행 서브쿼리) - 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리
- 단일 행 서브쿼리는 단인 행 비교 연산자와 함께 사용
   ex. =, >, <, <=, >=, <>
multi row 서브쿼리(다중 행 서브쿼리) - 서브쿼리의 실행 결과가 여러 건인 서브쿼리
- 다중 행 서브쿼리는 다중 행 비교연산자와 함께 사용
  ex. in, all, any, some, exists
multi column 서브쿼리(다중 컬럼 서브쿼리) - 서브쿼리의 실행 결과로 여러 컬럼을 반환
- 메인쿼리의 조건절에 여러 컬럼 동시 비교 가능
- 서브쿼리와 메인쿼리에서 비교하고자 하는 컬럼 개수와 컬럼 위치가 동일해야함

 

스칼라 서브쿼리

- SELECT 절에서 사용하는 서브쿼리

- 한 행, 한 컬럼만을 반환하는 서브쿼리

 

인라인뷰

- FROM절에서 사용

- 테이블 명이 올 수 있는 곳에서 사용, ORDER BY 사용 가능

 

- 실제 데이터를 가지고 있지 않지만 테이블을 수행하는 역할을 수행하기 때문에 가상 테이블이라고도 함

장점 설명
독립성 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.
편리성 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성한다.
보안성 직원의 급여정보와 같이 숨기고 싶은 정보가 존재할 때 사용

 

 

그룹 함수(GROUP 함수)

- 그룹함수

하나의 SQL로 테이블을 한 번만 읽어서 빠르게 원하는 리포트를 작성

 

ROLLUP 함수

Subtotal을 생성하기 위해 사용하며 GROUP BY로 묶인 칼럼의 소계 계산

Grouping Columns의 수를 N이라고 했을 때 N+1 Level의 Subtotal이 생성

계층 구조로 GROUP BY의 칼럼 순서가 바뀌면 결과 값 바뀜. 인수 순서에 주의

 

* 표현식

GROUP BY ROLLUP(E1,E2) 

 

CUBE  함수

조합이 가능한 모든 값에 대해 다차원 집계

ROLLUP에 비해 시스템 부하가 심함

 

* 표현식

GROUP BY CUBE(E1,E2) 

 

GROUPING SETS 함수

특정 항목에 대한 소계 계산

GROUP BY 컬럼 순서와 무관하게 개별적으로 처리

‘GROUP BY CUBE (E1,E2)’와 ‘GROUP BY GROUPING SETS (E1,E2,(E1,E2),())’는 동일한 결과

 

* 표현식

‘GROUP BY GROUPING SETS(E1,E2)