SubQuery
- 하나의 쿼리 안에 존재하는 또 다른 쿼리
- 바깥에 있는 엄마쿼리를 메인쿼리 - 안에 있는 아기쿼리를 서브쿼리
- 위치에 따른 SubQuery
| SELECT 절 | FROM 절 | WHERE 절, HAVING 절 |
| Scalar SubQuery | Inline View | Nested SubQuery |
Scalar SubQuery
- 주로 SELECT 절에 위치하지만, Column이 올 수 있는 대부분의 위치에 사용 가능
- 반드시 하나의 값만을 반환해야 하며, 그렇지 않은 경우 에러 발생
Inline View
- FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능
Nested SubQuery
- WHERE 절과 HAVING 절에 사용 가능
- Main Query와의 관계에 따라 나눌 수 있음
| Uncorrelated SubQuery | correlated SubQuery |
| Main Query 와의 관계를 맺고 있지 않음 | Main Query 와의 관계를 맺음 |
Nested SubQuery 데이터 형태
| Single Row | Multi Row | Multi Column |
| 1건 이하 데이터 반환 | 여러 건 데이터 반환 | 여러 컬럼 데이터 반환 |
| Ex) =, <, >, ... | Ex) IN, ALL, ,, | ... |
View
- 특정 SELECT 문에 이름을 붙여서 재사용이 가능하도록 저장해놓은 Object
- 실제 데이터를 저장하지 않고 데이터를 조회해오는 SELECT 문만 가진 가상 테이블
- 보안성, 편리성, 독립성을 가짐
집합 연산자
- 각 쿼리의 결과 집합을 가지고 연산을 하는 명령어
| UNION ALL | UNION | INTERSECT | MINUS/EXCEPT |
| 합집합 + 중복된 행은 그대로 | 합집합 + 중복된 행은 한 줄로 | 교집합 + 중복된 행은 한 줄로 | 차집합 + 중복된 행은 한 줄로 |
그룹 함수
- 데이터를 GROUP BY하여 나타낼 수 있는 데이터를 구하는 함수
| 집계 함수 | 소계(총계) 함수 |
| COUNT, SUM, AVG, MAX, MIN 등 | ROLLUP, CUBE, GROUPING SETS 등 |
소계(총계) 함수
ROLLUP
| ROLLUP(A) | ROLLUP(A, B) | ROLLUP(A, B, C) |
| A로 그룹핑, 총합계 | A, B로 그룹핑 -> A로 그룹핑, 총합계 | A, B, C로 그룹핑 -> ... -> 총합계 |
CUBE
- ROLLUP 에서 조합할 수 있는 모든 그룹에 대한 소계를 집계한 함수,,
GROUPING SETS
- 특정 항목에 대한 소계 계산하는 함수
- 인자값으로 ROLLUP이나 CUBE를 사용 가능
GROUPING
- ROLLUP, CUBE, GROUPING SETS 등과 함께 사용
- 소계를 나타내는 ROW를 구분할 수 있게 해 줌
- 원하는 위치에 원하는 텍스트를 출력
'Data Engineer > SQLD' 카테고리의 다른 글
| SQL 기본 (3) | 2024.11.13 |
|---|---|
| 데이터 모델과 SQL (3) | 2024.11.09 |
| SQLD - Data modeling (5) | 2024.11.03 |