그룹함수의 종류
그룹함수의 종류에는 ROLLUP(속성명), CUBE(속성명), GROUPING SETS(속성명) 으로 표현한다.
1. ROLLUP : 소그룹 간의 소계를 계산
2. CUBE : GROUP BY 항목들간 단원적인 소계를 계산할 수 있다(모든 그룹케이스를 계산)
3. GROUPING SETS: 특정 항목에 대한 소계를 계산할 수 있다.
(GROUPING SETS는 특정 항목을 그룹한 다수의 SQL들을 UNION 한것과 같다. 또한 나머지 그룹함수들에 대해서도 UNION으로 같은 결과를 낼 수 있다.)
GROUPING SETS()
1. GROUPING SETS는 ROLLUP과 CUBE와는 다르게 그룹핑된 결과만 보여준다.
2. GROUPING SETS는 괄호로 묶은 집합별로 집계 역시 구할 수 있다.
ㄴEX) GROUP BY GROUPING SETS(DEPT_NO, JOB, (DEPT_NO, JOB ), ());
- A별, B별 그룹 연산 결과 출력
- 나열 순서 중요하지 X
- 기본 출력에 전체 총계는 출력되지 X
- NULL 혹은 () 사용하여 전체 총 합 출력 가능
#GROUP BY GROUPING SETS(DEPT_NO, JOB, ()) 에서 '()'는 전체 총 합 출력을 말한다.
SELECT DEPT_NO, JOB, SUM(SAL)
FROM DEPT
GROUP BY GROUPING SETS(DEPT_NO, JOB, ());
DEPT_NO | JOB | SUM(SAL) |
A001 | null | 3000 |
A002 | null | 5000 |
null | 개발자 | 2000 |
null | 디자이너 | 1000 |
null | null | 11000 |
ROLLUP()
-A별,(A,B)별, 전체 그룹 연산 결과 출력
-나열 대상의 순서가 중요함
-기본적으로 전체 총계가 출력됨
EX)ROLLUP(DEPT_NO, JOB) -> DEPT_NO별, (DEPT_NO, JOB)별 전체 연산 결과 출력
SELECT DEPT_NO, JOB, SUM(SAL)
FROM DEPT
GROUP BY ROLLUP(DEPT_NO, JOB);
DEPT_NO | JOB | SUM(SAL) |
A001 | 개발자 | 2000 |
A001 | 디자이너 | 1000 |
A001 | null | 3000 |
A002 | 개발자 | 5000 |
A002 | null | 5000 |
null | null | 8000 |
CUBE()
1. CUBE 함수는 그룹핑 컬럼이 가질 수 있는 모든 경우의 수에 대하여 소계(SUBTOTAL)과 총계 (GRAND TOTAL)을 생성한다.
2. ROLLUP 함수와 다르게 인자의 순서가 달라도 결과는 같다.
SELECT DEPT_NO, JOB, SUM(SAL)
FROM DEPT
GROUP BY CUBE(DEPT_NO, JOB)
DEPT_NO | JOB | SUM(SAL) |
null | null | 8000 |
null | 개발자 | 5000 |
null | 디자이너 | 1000 |
A001 | 개발자 | 2000 |
A001 | 디자이너 | 1000 |
A001 | null | 3000 |
A002 | 개발자 | 5000 |
A002 | null | 5000 |
'SQL' 카테고리의 다른 글
[SQL] 탑 앤 쿼리 (TOP N QUERY) (0) | 2024.08.18 |
---|---|
[SQL] 윈도우 함수(LAG, LEAD, SUM, AVG, MIN, MAX, COUNT, RANK 등..) (0) | 2024.08.13 |
[SQL]테이블, 데이터 복사 쿼리 (0) | 2024.06.07 |
DB, USER 생성 및 권한설정 (0) | 2023.11.10 |
SQL 함수 만들기 및 사용.... (0) | 2023.09.27 |