참치코더의 꿈 메모장

2021/07/25 Oracle - 그룹화와 관련된 여러 함수 본문

Oracle

2021/07/25 Oracle - 그룹화와 관련된 여러 함수

참치깡 2021. 7. 25. 16:58
728x90

ROLLUP, CUBE, GROUPING SETS 함수

 

ROLLUP, CUBE , GROPING SETS 함수는 GROUP BY절에 지정할 수 있는 특수 함수이다. 

 

SELECT [조회할 열1 이름], [열 2 이름], ... , [열 N 이름]

FROM [조회할 테이블 이름]

WHERE [조회할 행을 선별하는 조건식]

GROUP BY ROLLUP [그룹화 열 지정(여러 개 지정 가능)];

 

SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]

FROM [조회할 테이블 이름]

WHERE [조회할 행을 선별하는 조건식]

GROUP BY CUBE[그룹화 열 지정(여러 개 지정 가능)];

 

 ROLLUP, CUBE  : 그룹화 데이터의 합계를 함께 출력하는데 사용한다.

 

ROLLUP 함수는 명시한 열을 소그룹부터 대그룹 순서로 각 그룹별 결과를 출력하고 마지막에 총 데이터의 결과를

출력한다.

 

*ROLLUP함수에는 그룹 함수를 지정할 수 없다

*CUBE 함수는 지정한 모든 열에서 가능한 조합의 결과를 모두 출력한다.

 

ROLLUP(A,B,C)

1. A 그룹별, B그룹별 C 그룹에 해당하는 결과 출력 

2. A 그룹별, B 그룹에 해당하는 결과 출력 

3. A 그룹에 해당하는 결과 출력 

4. 전체 데이터 결과 출력 

 

CUBE(A,B,C)

1. A 그룹별, B 그룹별, C 그룹에 해당하는 결과 출력 

2. A 그룹별 B 그룹의 결과 출력 

3. B 그룹별 C 그룹의 결과 출력

4. A 그룹별 C 그룹의 결과 출력 

5. A 그룹 결과

6. B 그룹 결과

7. C 그룹 결과 

8. 전체 데이터 결과 

 

*필요한 조합의 출력만 보려면 ROLLUP 함수와 CUBE 함수에 그룹화 열 중 일부만을 지정 할 수 있다.

  이를 Partial Rollup/cube , 부분 분할 ROLLUP ,CUBE라고 한다. 

 

GROUPING SETS 함수 

 

SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]

FROM [조회할 테이블 이름]

WHERE [조회할 행을 선별하는 조건식]

GROUP BY GROUPING SETS [그룹화 열 지정(여러 개 지정 가능)];

 

GROUPING SETS:

여러 그룹화 대상 열의 결과 값을 각각 같은 수준으로 출력한다.

 

그룹화 함수

그룹화 함수는 데이터 자체의 가공이나 특별한 연산 기능을 수행하지는 않지만 그룹화 데이터의 식별이 쉽고

가독성을 높이기 위한 목적으로 사용한다.

 

 SELECT [조회할 열1 이름], [열 2 이름], .., [열 N 이름]

GROUPING [GROUP BY 절에 ROLLUP 또는 CUBE 에 명시한 그룹화할 열 이름]

FORM [조회할 테이블 이름]

WHERE [조회할 행을 선별하는 조건식]

GROUP BY ROLLUP 또는 CUBE[그룹화할 열];

 

현재 결과가 그룹화 대상 열의 그룹화가 이루어진 상태의 집계인지 여부를 출력한다.

 

*여기서 GROUPING 함수를 사용하면 그룹화되었다는 표시 0 그룹화 되지 않았다는 표시 1이 표시된다.

* GROUPING 함수의 결과가 오직 0과 1로 구별하여 출력하면 현재 출력되는 데이터가 어떤 열의 그룹화를 통해 

  나온 것인지 알 수 있다.

 

GROUPING_ID 함수

 

SELECT [조회할 열1 이름][열 2 이름], ..., [열N 이름]

GROUPING_ID[그룹화 여부를 확인할 열(여러 개 지정 가능)]

FROM [조회할 테이블 이름]

WHERE [조회할 행을 선별하는 조건식]

GROUP BY ROLLUP 또는 CUBE [그룹화 할 열];

 

GROUPING 함수처럼 특정 열의 그룹화 여부를 출력할 수 있으며,  검사할 열을 여러 개 지정할 수 있다. 

 

* 0과 1로 구성된 그룹화 비트 벡터 값을 2진수로 보고 10진수로 바꾼 값이 최종 결과로 출력된다.

 

LISTAGG 함수

 

SELECT [조회할 열1 이름], [열 2 이름], ... , [열N 이름]

          LISTAGG([나열할 열(필수)], [각 데이터를 구분하는 구분자(선택)])

          WITHIN GROUP(ORDER BY 나열할 열의 정렬 기준 열 (선택))

  FROM [조회할 테이블 이름]

WHERE [조회할 행을 선별하는 조건식];

 

그룹화 데이터를 하나의 열에 가로로 나열하여 출력하는 데 사용된다.

728x90
Comments