728x90
반응형
그룹 함수
- 숫자함수 중 여러 값을 전달하여 하나의 요약값을 출력하는 다중행 함수
- 수학/통계 함수 (기술통계 함수) 들을 의미
- GROUP BY절에 의해 그룹별 연산 관계를 리턴
- 반드시 한 컬럼만 전달
- NULL은 무시하고 연산
COUNT
- 행의 수를 세는 함수
- 대상 컬럼은 * 또는 단 하나의 컬럼만 전달 가능
- * 사용 시 모든 컬럼의 값이 NULL일 때만 COUNT 제외
- 문자, 숫자, 날짜 컬럼 모두 전달 가능
- 행의 수를 세는 경우 NOT NULL 컬럼을 찾아 세는 것이 좋음 (PK 컬럼)
SUM
- 총 합 출력
- 숫자 컬럼만 전달 가능
AVG
- 평균 출력
- 숫자 컬럼만 전달 가능
- NULL을 제외한 대상의 평균을 리턴하므로 전체 대상 평균 연산 시 주의
MIN / MAX
- 최소(MIN) / 최대(MAX) 값 출력
- 날짜, 숫자, 문자 모두 가능
- 오름차순 순서대로 최소, 최대 출력
VARIANCE / STDDEV
- 평균, 표준편차 출력
- 표준편차는 평균값의 루트값
GROUP BY FUNCTION
- GROUP BY절에 사용하는 함수
- 여러 GROUP BY 결과를 동시에 출력하는 기능 (합집합)
- 그룹핑 할 그룹을 정의 (전체 소계 등)
GROUPING SETS(A, B, ...)
- A별, B별 그룹 연산 결과 출력
- 다양한 소계 집합을 만들 수 있는데, GROUPING SETS에 표시된 인수들에 대한 개별 집계를 구할 수 있으며, 이때 표시된 인수들 간에는 계층 구조인 ROLLUP과는 달리 평등한 관계이므로 인수의 순서가 바뀌어도 결과는 같다.
- 나열 순서는 중요하지 않음
- 결과에 대한 정렬이 필요한 경우에는 ORDER BY 절에 명시적으로 정렬 컬럼이 표시되어야 한다.
- 기본 출력에 전체 총계는 출력되지 않음
- NULL 혹은 () 을 사용하여 전체 총 합 출력 가능
- DEPTNO별 SAL의 총 합 결과와 JOB별 SAL의 총 합 결과의 합집합
GROUPING SETS() 예시
- GROUPING SETS() 에 나열한 대상에 대해 각 GROUP BY의 결과를 출력
- UNION ALL을 사용하여 동일한 결과 출력 가능
UNION ALL을 사용한 예시
ROLLUP(A, B)
- A별, (A, B)별, 전체 그룹 연산 결과 출력
- 나열 대상의 순서가 중요함
- 기본적으로 전체 총 합이 출력됨
UNION으로 대체 가능
CUBE(A, B)
- 결합 가능한 모든 값에 대하여 다차원 집계를 생성
- A별, B별, (A, B)별, 전체 그룹 연산 결과를 출력
- 그룹으로 묶을 대상의 나열 순서는 중요하지 않음
- 결과에 대한 정렬이 필요한 경우는 ORDER BY 절에 명시적으로 정렬 컬럼이 표시되어야 한다.
- 기본적으로 전체 총 합이 출력
- Grouping Columns가 가질 수 있는 모든 경우에 대하여 Subtotal을 생성해야 하는 경우에는 CUBE를 사용하는 것이 바람직하나, ROLLUP에 비해 시스템에 많은 부담을 주므로 사용에 주의해야 한다.
반응형
'[DB]DataBase > [SQL]' 카테고리의 다른 글
[SQLD] Top N 쿼리 (0) | 2024.05.18 |
---|---|
[SQLD] 윈도우 함수 (0) | 2024.05.16 |
[SQLD] 집합 연산자 (0) | 2024.05.06 |
[SQLD] 서브 쿼리 (0) | 2024.05.05 |
[SQLD] 표준 조인 (0) | 2024.05.05 |