[Oracle] 오라클 그룹별 합계 구하기 (SUM)

오라클에서 그룹별로 합계를 구할 때는 SUM 함수를 사용한다. 기본적으로 GROUP BY 절을 사용하여 그룹별로 합계를 구하며, GROUP BY 절을 사용하지 않고 OVER 절을 사용하면 데이터를 그룹화하지 않고 조회된 각 행에 그룹별 합계를 표시할 수 있다. 합계나 소계를 새로운 행으로 표시하고 싶다면 ROLLUP, GROUPING SETS을 사용하면 된다.

 

오라클 그룹별 합계

그룹별 합계 - 1 (GROUP BY 절)

SELECT SUM(sal)
  FROM emp

 

 

SELECT 절에 집계 함수(SUM, MAX, COUNT 등)만 있으면 GROUP BY 절을 사용하지 않아도 집계가 된다.

 

직군별 합계

SELECT job    
     , SUM(sal) 
  FROM emp
 GROUP BY job

 

 

 SELECT 절과 GROUP BY 절에 그룹별로 합산할 컬럼(job)을 지정하면 해당 그룹별로 합계를 출력한다.

 

직군별, 근무지별 합계

SELECT job 
     , deptno
     , SUM(sal) 
     , SUM(sal + NVL(comm, 0))
  FROM emp
 GROUP BY job, deptno

 

 

집계 함수(SUM) 내부에서 함수, 연산자를 사용하여 값을 계산할 수 있으며 최종 계산된 값을 합산하여 출력한다.

사칙 연산자를 사용할 때는 해당 컬럼에 NULL이 존재하면 계산이 되지 않으므로 NVL로 치환해 준다.

 

그룹별 합계 - 2 (OVER 절)

SELECT ename
     , job
     , sal
     , SUM(sal) OVER()
  FROM emp
 WHERE job = 'MANAGER'

 

 

GROUP BY 절을 사용하여 합계를 구하면 그룹별로 합산되어 하나의 행과 합계가 조회되지만, OVER 절을 사용하면 조회된 각 행에 합계를 보여준다. 

 

SUM 함수 옆에 OVER()만 사용하면 조회된 전체(sal)를 합산하여 각 행에 보여준다.

 

PARTITION BY 절을 사용한 그룹별 합계

SELECT ename
     , job
     , sal
     , SUM(sal) OVER(PARTITION BY job)
  FROM emp
 WHERE job IN ('MANAGER', 'SALESMAN')

 


 

OVER 절 내부에 PARTITION BY 절을 사용하여 그룹 컬럼을 지정하면 해당 그룹별 합계를 각 행에 보여준다.

PARTITION BY 절은 GROUP BY 절과 사용법이 비슷하다고 생각하면 된다.

 

예제쿼리(테이블포함).txt
0.00MB

 

집계된 합계, 소계를 새로운 행으로 표시하고 싶으면 아래를 참고하면 된다.

 

[Oracle] 오라클 ROLLUP 합계, 소계 구하기 (예제 포함)

오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하여 손쉽게 합계와 소계를 구할 수 있다. 1. GROUP BY 컬럼이 하나인 경우 - GROUP BY 절에 ROLLUP 함수를 추가한 후 그룹핑 컴럼을 인자로 넣는다 SELE.

gent.tistory.com

 

[Oracle] 오라클 GROUPING SETS 사용방법 (소계, 합계)

오라클에서 소계, 합계, 총계의 쿼리(SQL)를 작성할 때는 ROLLUP을 많이 사용한다. ROLLUP의 경우 나열된 컬럼의 단계별로 소계, 합계를 자동으로 집계를 한다. 그에 반해 GROUPING SETS는 여러 그룹핑 쿼

gent.tistory.com

 

[Oracle] 오라클 PARTITION BY 사용법 정리 (분석함수)

오라클에서 분석함수를 사용할 때 PARTITION BY를 사용하여 그룹으로 묶어서 연산을 할 수 있다. GROUP BY 절을 사용하지 않고, 조회된 각 행에 그룹으로 집계된 값을 표시할 때 OVER 절과 함께 PARTITION B

gent.tistory.com

 

 

댓글

Designed by JB FACTORY