파게로그

group function 본문

콤퓨타 왕기초/SQLD/JDBC/Oracle DB

group function

파게 2021. 3. 21. 15:54

ROLLUP

SELECT DECODE(deptno, NULL, '전체합계', deptno), SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno);

SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno, job); -- 부서별 합계 - 직업별 합계 - 전체합계. 순서에 따라서 결과가 달라짐
  • GROUP BY의 칼럼에 대해서 subtotal을 만듦
  • GROUP BY구에 칼럼이 2개 이상 오면, 순서에 따라서 결과가 달라짐

 

GROUPING

SELECT deptno, GROUPING(deptno), job, GROUPING(job), SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno, job);

SELECT
deptno,
DECODE(GROUPING(deptno), 1, '전체합계') total_all, job,
DECODE(GROUPING(job), 1, '부서합계') total_dept, SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno, job);
  • ROLLUP, CUBE, GROUPING SETS에서 생성되는 합계값을 구분하기 위한 함수
  • 계산된 합계에는 1, 그렇지 않은 합계에는 0 반환

 

GROUPING SETS

SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY GROUPING SETS(deptno, job);
  • GROUP BY에 나오는 칼럼의 순서와 관계없이 다양한 소계를 만듦
  • GROUP BY에 나오는 칼럼의 순서와 관계없이 개별적으로 모두 처리

 

CUBE

SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY CUBE(deptno, job);
  • CUBE 함수에 제시한 칼럼에 대해서 결합 가능한, 즉 조합할 수 있는 모든 경우의 수를 조합하여 집계 계산
  • 다차원 집계 제공

'콤퓨타 왕기초 > SQLD/JDBC/Oracle DB' 카테고리의 다른 글

table partition  (0) 2021.03.22
window function  (0) 2021.03.22
subquery  (0) 2021.03.21
계층형 조회(CONNECT BY)  (0) 2021.03.21
join  (0) 2021.03.19
Comments