07 - 4 그룹화와 관련된 여러 함수

ROLLUP, CUBE, GROUPING SETS 함수

ROLLUP, CUBE, GROUPING SETS 함수는 GROUP BY절에 지정할 수 있는 특수 함수이다. ROLLUP함수와 CUBE함수는 그룹화 데이터의 합계를 출력할 때 유용하게 사용할 수 있다.

SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름]
WHERE [조회할 행을 선별하는 조건식]
GROUP BY ROLLUP [그룹화 열 지정(여러 개 지정 가능)]; // 1.
SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름]
WHERE [조회할 행을 선별하는 조건식]
GROUP BY CUBE [그룹화 열 지정(여러 개 지정 가능)]; // 2.
번호키워드필수 요소선택 요소설명
1, 2ROLLUP, CUBE그룹화 열 지정-그룹화 데이터의 합계를 함께 출력하는 데 사용합니다.
  • GROUPING SETS 함수

GROUPING SETS 함수는 같은 수준의 그룹화 열이 여러 개일 때 각 열별 그룹화를 통해 결과 값을 출력하는 데 사용한다.

SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름]
WHERE [조회할 행을 선별하는 조건식]
GROUP BY GROUPING SETS [그룹화 열 지정(여러 개 지정 가능)]; // 1.
번호키워드필수 요소선택 요소설명
1.GROUPING SETS그룹화 열-여러 그룹화 대상 열의 결과 값을 각각 같은 수준으로 출력합니다.

그룹화 함수

그룹화 함수는 데이터 자체의 가공이나 특별한 연산 기능을 수행하지는 않지만 그룹화 데이터의 식별이 쉽고 가독성을 높이기 위한 목적으로 사용한다.

  • GROUPING 함수
SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름]
GROUPING [GROUP BY절에 ROLLUP 또는 CUBE에 명시한 그룹화 할 열 이름]
FROM [조회할 테이블 이름]
WHERE [조회할 행을 선별하는 조건식]
GROUP BY ROLLUP 또는 CUBE [그룹화 열]; // 1.
번호키워드필수 요소선택 요소설명
1.GROUPING그룹화 여부를 확인할 열-현재 결과가 그룹화 대상 열의 그룹화가 이루어진 상태의 집계인지 여부를 출력합니다.
  • GROUPING_ID 함수

GROUPING_ID 함수는 GROUPING 함수와 마찬가지로 ROLLUP 또는 CUBE 함수로 연살할 때 특정 열이 그룹화되었는지를 출력하는 함수이다.

그룹화 여부를 검사할 열을 하나씩 지정하는 GROUPING 함수와 달리 GROUPING_ID 함수는 한 번에 여러 열을 지정할 수 있다.

SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름]
GROUPING_ID [그룹화 여부를 확인할 열(여러 개 지정 가능)]
FROM [조회할 테이블 이름] WHERE [조회할 행을 선별하는 조건식]
GROUP BY ROLLUP 또는 CUBE [그룹화 할 열]; // 1.
번호키워드필수 요소선택 요소설명
1.GROUPING_ID그룹화 여부를 확인할 열-GROUPING 함수처럼 특정 열의 그룹화 여부를 출력할 수 있으며, 검사할 열을 여러 개 지정할 수 있습니다.

LISTAGG 함수

LISTAGG 함수는 오라클 11g 버전부터 사용할 수 있는 함수이다. 그룹에 속해 있는 데이터를 가로로 나열할 때 사용한다.

SELECT [조회할 열1 이름], [2 이름], ..., [열N 이름]
LISTAGG([나열할 열(필수)], [각 데이터를 구분하는 구분자(선택)])
WITHIN GROUP(ORDER BY 나열할 열의 정렬 기준 열 (선택)) // 1.
FROM [조회할 테이블 이름]
WHERE [조회할 행을 선별하는 조건식];
번호키워드필수 요소선택 요소설명
1.LISTAGG ~ WITHIN GROUP나열할 열각 데이터를 구분하는 구분자, 지정하지 않을 경우 NULL이 기본값이 됩니다.그룹화 데이터를 하나의 열에 가로로 나열하여 출력하는 데 사용합니다.

PIVOT, UNPIVOT 함수

PIVOT, UNPIVOT 함수는 오라클 11g부터 제공하면 PIVOT함수는 기존 테이블 행을 열로 바꾸고 UNPIVOT 함수는 기존 테이블 열을 행으로 바꿔서 출력한다.

SELECT *
FROM(SELECT DEPTNO, JOB, SAL
FROM EMP)
PIVOT(MAX(SAL)
FOR DEPTNO IN (10, 20, 30)
)
ORDER BY JOB;

SELECT *
FROM(SELECT DEPTNO,
MAX(DECPDE(JOB, 'CLERK' , SAL)) AS "CLERK",
MAX(DECODE(JOB, 'SALESMAN', SAL)) AS "SALESMAN",
MAX(DECODE(JOB, 'PRESIDENT', SAL)) AS "PRESIDENT",
MAX(DECODE(JOB, 'MNAGER', SAL)) AS "MANAGER",
MAX(DECODE(JOB, 'ANALYST', SAL)) AS "ANALYST"
FROM EMP
GROUP BY DEPTNO
ORDER BY DEEPTNO)
UNPIVOT(
SAL FOR JOB IN (CLERK, SALESMAN, PRESIDENT, MANAGER, ANALYST))
ORDER BY DEPTNO, JOB;

profile
블로그 이사 중 ⭐️ || https://bebeco.tistory.com/

0개의 댓글