[SQLD] #12. SQL 활용 - 서브쿼리/그룹 함수

김정인·2021년 2월 23일
0

SQLD

목록 보기
12/16

서브쿼리

💡 서브쿼리란?

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

  • 서브쿼리를 괄호로 감싸서 사용
  • 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용이 가능
  • 서브쿼리에서는 ORDER BY를 사용 불가

💡 동작 방식에 따른 분류

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

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

종류설명
Single Row(단일 행) 서브쿼리- 서브쿼리 결과가 항상 1건 이하인 서브쿼리
- 단일 행 비교 연산자와 함께 사용 (등호, 부등호)
Mulit Row(다중 행) 서브쿼리- 실행 결과가 여러 건인 서브쿼리
다중 행 비교 연산자와 함께 사용 (IN, ALL, ANY, SOME, EXISTS 등)
Multi Column(다중 컬럼) 서브쿼리- 실행 결과로 여러 컬럼을 반환
- 메인쿼리의 조건절에 여러 칼럼을 동시에 비교 가능
- 서브쿼리와 메인쿼리에서 비교하고자 하는 칼럼 개수와 위치가 동일해야 함

💡 스칼라 서브쿼리

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

💡 인라인 뷰

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

💡 뷰

    테이블은 실제로 데이터를 가지고 있는 반면, 뷰는 실제 데이터를 가지고 있지 않다. 가상 테이블이라고도 함

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

그룹 함수 (GROUP 함수)

💡 그룹 함수란?

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

💡 ROLLUP 함수

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

  • Grouping Columns의 수를 N이라고 했을 때 N+1 Level의 Subtotal이 생성
  • 계층 구조로 GROUP BY의 칼럼 순서가 바뀌면 결과 값 바뀜. 인수 순서에 주의
표현식출력값
GROUP BY ROLLUP(E1,E2)E1과 E2별 소계 / E1별 소계 / 총합계

💡 CUBE 함수

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

  • ROLLUP에 비해 시스템에 부하 심함
표현식출력값
GROUP BY CUBE (E1,E2)E1과 E2별 소계 / 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)E1별 소계 / E2별 소계

0개의 댓글

관련 채용 정보