-
[SQLD] SQL 개발자 공부하기 Day 8 : 그룹 함수 (Group Function)Study/SQL 2024. 2. 23. 16:32728x90반응형
목차
1. 그룹 함수 (Group Function)
오늘은 Live SQL을 사용해서 공부를 할 것이다.
위의 표는 내가 임의로 만든 표이다. 이것을 사용해서 예시를 만들어 볼 것이다.
그룹 함수 Group Function
(1) ROLLUP
‣ GROUP BY에 칼럼에 대해서 Subtotal을 만들어 준다.
‣ ROLLUP을 할 때 GROUP BY구에 칼럼이 두 개 이상 오면 순서에 따라서 결과가 달라진다.
SELECT DECODE(DEPTNO, NULL, '전체합계', DEPTNO), SUM(SAL)
FROM EMP
GROUP BY ROLLUP (DEPTNO);‣ DEPTNO 별로 SAL의 합계를 계산했다.
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY ROLLUP (DEPTNO, JOB);‣ ROLLUP 할 때, 칼럼이 두 개 이상 오면 순서에 따라 결과가 달라진다.
‣ DEPTNO와 JOB의 계층별로 합계를 조회한다.
반응형(2) GROUPING 함수
‣ ROLLUP, CUBE, GROUPING SETS에서 생성되는 합계값을 구분하기 위해서 만들어진 함수다.
‣ 소계, 합계 등이 계산되면 GROUPING 함수는 1을 반환하고, 그렇지 않으면 0을 반환해서 합계값을 식별할 수 있다.
‣ GROUPING 함수의 기능을 사용하면 사용자가 필요로 하는 데이터를 SELECT문으로 작성하여 제공할 수 있다.
SELECT DEPTNO, GROUPING(DEPTNO), JOB, GROUPING(JOB), SUM(SAL)
FROM EMP
GROUP BY ROLLUP (DEPTNO, JOB);‣ 소계, 합계 계산이 되면 1을 반환한다. 그렇지 않으면 0을 반환한다.
‣ GROUPING의 반환 값으로 DECODE 혹은 CASE문으로 식별할 수 있다. (ex. 1이 나오면 "부서합계")
(3) GROUPING SETS 함수
‣ GROUP BY에 나오는 칼럼의 순서와 관계없이 다양한 소계를 만들 수 있다.
‣ GROUP BY에 나오는 칼럼의 순서와 관계없이 개별적으로 모두 처리한다.
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY GROUPING SETS (DEPTNO, JOB);728x90‣ DEPTNO의 합계와 JOB의 합계가 개별적으로 조회되었다.
(4) CUBE 함수
‣ CUBE 함수에 제시한 칼럼에 대해서 결합 가능한 모든 집계를 계산한다.
‣ 다차원 집계를 제공하여 다양하게 데이터를 분석할 수 있게 한다.
‣ 부서와 직업을 CUBE로 사용하면 부서별 합계, 직업별 합계, 부서별 직업별 합계, 전체 합계가 조회된다.
‣ 즉, 조합할 수 있는 경우의 수가 모두 조합되는 것이다.
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY CUBE(DEPTNO, JOB);‣ 전체 합계, JOB의 합계, DEPTNO의 합계, DEPTNO별 JOB의 합계가 조회되었다.
728x90반응형'Study > SQL' 카테고리의 다른 글
[SQLD] SQL 개발자 공부하기 Day 10 : 계층형 조회 / PIVOT / UNPIVOT / 정규표현식 (0) 2024.02.25 [SQLD] SQL 개발자 공부하기 Day 9 : 윈도우 함수 / Top N 쿼리 (1) 2024.02.24 [SQLD] SQL 개발자 공부하기 Day 7 : SUBQUERY / JOIN / UNION / MINUS (0) 2024.02.22 [SQLD] SQL 개발자 공부하기 Day 6 : GROUP BY / HAVING / 형변환 / 내장형 함수 (0) 2024.02.21 [SQLD] SQL 개발자 공부하기 Day 5 : SELECT / WHERE / NULL (0) 2024.02.20