집합 연산자
- SELECT 문 결과를 하나의 집합으로 간주, 그 집합에 대한 합집합, 교집합, 차집합 연산
- SELECT 문과 SELECT 문 사이에 집합 연산자 정의
- 두 집합의 컬럼이 동일하게 구성되어야 함(각 컬럼의 데이터 타입과 순서 일치 필요)
- 전체 집합의 데이터 타입과 컬럼명은 첫 번째 집합에 의해 결정됨
합집합
- 두 집합의 총 합(전체) 출력
- UNION과 UNION ALL 사용 가능
- UNION
- 중복된 데이터는 한 번만 출력
- 중복된 데이터를 제거하기 위해 내부적으로 정렬 수행
- 중복된 데이터가 없을 경우는 UNION 사용 대신 UNION ALL 사용 (불필요한 정렬 발생할 수 있으므로)
- UNION ALL
- 중복된 데이터도 전체 출력
교집합
- 두 집합 사이에 INTERSECT
- 두 집합의 교집합(공통으로 있는 행) 출력
차집합
- 두 집합 사이에 MINUS 전달
- 두 집합의 차집합(한 쪽 집합에만 존재하는 행) 출력
- A-B와 B-A는 다르므로 집합의 순서 주의
집합 연산자 사용 시 주의 사항
- 두 집합의 컬럼 수 일치
- 두 집합의 컬럼 순서 일치
- 두 집합의 각 컬럼의 데이터 타입 일치
- 각 컬럼의 사이즈는 달라도 됨
- 개별 SELECT 문에 ORDER BY 전달 불가(GROUP BY 전달 가능)
- SQL 가장 하단에서 ORDER BY는 개별 SELECT이 아닌 전체 정렬이기 때문에 가능
그룹 함수
- 숫자 함수 중 여러 값을 하나의 요약 값을 출력하는 다중행 함수
- 수학 / 통계 함수들 (기술 통계 함수)
- GROUP BY 절에 의해 그룹별 연산 결과를 리턴함
- 반드시 한 컬럼만 전달
- NULL은 무시하고 연산
COUNT
- 행의 수를 세는 함수
- 대상 컬럼은 * 또는 단 하나의 컬럼만 전달 가능(* 사용 시 모든 컬럼의 값이 널일 때만 COUNT 제외)
- 문자, 숫자, 날짜 컬럼 모두 전달 가능
- 행의 수를 세는 경우 NOT NULL 컬럼을 찾아 세는 것이 좋음 (PK 컬럼)
AVG
- 평균 출력
- 숫자 컬럼만 전달 가능
- NULL을 제외한 대상의 평균을 리턴하므로 전체 대상 평균 연산 시 주의
VARIANCE / STDDEV
- 분산과 표준 편차
- 표준 편차는 분산의 루트
GROUP BY FUNCTION
- GROUP BY 절에 사용하는 함수
- 여러 GROUP BY 결과를 동시에 출력(합집합)하는 기능
- 그룹핑할 그룹을 정의 (전체 소계 등)
- GROUPING SETS(A, B, ..)
- A별, B별 그룹 연산 결과 출력
- 나열 순서 중요하지 않음
- 기본 출력에 전체 총계는 출력되지 않음
- NULL 혹은 () 사용하여 전체 총 합 출력 가능
- UNION ALL로 대체 가능
- ROLLUP(A, B)
- A별, (A, B)별, 전체 그룹 연산 결과 출력
- 나열 대상의 순서가 중요함
- 기본적으로 전체 총 계가 출력됨
- UNION ALL로 대체 가능
- CUBE(A, B)
- A별, B별, (A, B)별, 전체 그룹 연산 결과 출력됨
- 그룹으로 묶을 대상의 나열 순서 중요하지 않음
- 기본적으로 전체 총 계가 출력
- UNION ALL, GROUPING SETS로 대체 가능
'SQL' 카테고리의 다른 글
SQLD - SQL 활용 (Top N 쿼리, 계층형 질의) (2) | 2024.11.16 |
---|---|
SQLD - SQL 활용 (윈도우 함수) (1) | 2024.11.16 |
SQLD - SQL 활용(서브 쿼리) (3) | 2024.11.16 |
SQLD - 데이터 모델과 SQL(모델이 표현하는 트랜잭션의 이해, Null 속성의 이해, 본질 식별자 VS 인조 식별자) (3) | 2024.11.15 |
SQLD - 데이터 모델과 SQL (관계와 조인의 이해) (1) | 2024.11.15 |