본문 바로가기

데이터베이스/SQLD

[SQLD] 집합 연산자

집합 연산자

 - SELECT문 결과를 하나의 집합으로 간주. 그 집합에 대한 합집합, 교집합, 차집합 연산

 - 두 집합의 컬럼이 동일하게 구성되어야 함

 

합집합

 - 두 집합의 총 합 출력

  1) UNION

  - 중복된 데이터 제거

  - 중복된 데이터를 제거하기 위해 내부적으로 정렬 수행

  2) UNION ALL

  - 중복된 데이터도 전체 출력

 

교집합

 - INTERSECT

 - 두 집합의 교집합 출력

 

차집합

 - 두 집합 사이에 MINUS

 - 두 집합의 차집합 출력

 - (A-B)와 (B-A)는 다름

 

집합 연산자 사용 주의

1. 두 집합의 컬럼 수 일치

2. 두 집합의 컬럼 순서 일치

3. 두 집합의 각 컬럼의 데이터 타입 일치

4. 각 컬럼의 사이즈는 달라도 됨

5. 개별 SELECT문에 ORDER BY 전달 불가 (GROUP BY는 가능)

 

 

 

그룹 함수

 - 숫자함수 중 여러값을 전달하여 하나의 요약값을 출력하는 함수

 - 반드시 한 컬럼만 전달

 - NULL은 연산하지 않음

 

COUNT

 - 행의 수를 세는 함수

 - * 또는 하나의 컬럼만 전달

SUM

 - 총 합 출력 (숫자만 가능)

AVG

 - 평균 출력 (숫자만 가능)

 - NULL을 제외하고 계산

MIN/MAX

 - 최대, 최소 출력

VARIANCE/STDDEV

 - 분산과 표준편차

 

GROUP BY FUNCTION

 - GROUP BY절에 사용하는 함수

 - 여러 GROUP BY 결과를 동시에 출력하는 기능

1. GROUPING SETS(A, B, ...)

 - A별, B별 그룹 연산 결과 출력

ex) SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY GROUPING SETS(DEPTNO, JOB);

    = SELECT DEPTNO, NULL AS JOB, SUM(SAL) FROM EMP GROUP BY DEPTNO

        UNION ALL

        SELECT NULL, JOB, SUM(SAL) FROM EMP GROUP BY JOB;

 

2. ROLLUP(A, B)

- A별, (A, B)별, 전체 그룹 연산 결과 출력 (순서중요)

 

3. CUBE(A, B)

 - A별, B별, (A, B)별, 전체 그룹 연산 결과 출력

'데이터베이스 > SQLD' 카테고리의 다른 글

[SQLD] TOP N QUERY, 계층형 질의  (0) 2024.11.16
[SQLD] 조인  (0) 2024.11.11
[SQLD] 함수  (0) 2024.11.10
[SQLD] 관계형 데이터베이스  (1) 2024.11.10
[SQLD] 정규화  (0) 2024.11.09