오라클 sum - olakeul sum

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : Toad

개발 언어 : Oracle

오라클 sum - olakeul sum

/* =========================== */

/* =========================== */

[소스 코드]

/*
[sum over partition by 사용해서 그룹별 누적 합계 및 총 합계 구하기 실시]
1. partition by : 소그룹을 만들때 사용합니다
2. unbounded preceding - current row : 처음행부터 현재행까지 계속 순차적 누적 합계를 구합니다
3. 누적 합계 시 order by 컬럼이 중복되지않는 값을 가지고 있어야합니다
*/    
select distinct t_name, 
                t_age, 
                t_dept,
                sum(t_age)over(partition by t_dept 
                                order by t_name desc --누적 합계 시 order by 컬럼이 중복되지않는 값을 가지고 있어야합니다
                                rows between unbounded preceding and current row) as 누적합계,
                sum(t_age)over(partition by t_dept) as 총합계
    from test_user
order by t_dept asc; 

/* =========================== */

[결과 출력]

오라클 sum - olakeul sum

/* =========================== */

/* =========================== */

[요약 설명]

1. partition by : 소그룹을 만들때 사용합니다

2. unbounded preceding - current row : 처음행부터 현재행까지 계속 순차적 누적 합계를 구합니다

3. 누적 합계 시 order by 컬럼이 중복되지않는 값을 가지고 있어야합니다

/* =========================== */

오라클의 SELECT 쿼리문의 GROUP BY 합계(sum)의 Total을 추가적으로 출력하고자 할 경우 사용하는 구문 입니다.

- ROLLUP : 맨 마지막 행에 Total 출력

SELECT class, sum(score)

    FROM std

    GROUP BY ROLLUP(class);

- 설명 : class로 그룹핑 된 score의 sum을 출력하고, 맨 마지막 행에 score의 전체 토탈을 추가로 출력된다.

SELECT class, sex, sum(score)

    FROM std

    GROUP BY ROLLUP(class, sex);

- 설명 : class 그룹핑이 끝나는 행 다음마다 각 class의 토탈을 추가로 출력하고,

            맨 마지막에 전체의 토탈을 추가로 출력된다.

- CUBE : 첫번째 행에 Total 출력

SELECT class, sum(score)

    FROM std

    GROUP BY CUBE(class);

- 설명 : 첫번째 행에 score의 전체 토탈이 출력되고, 다음 행부터 각 class의 sum이 출력된다,

SELECT class, sex, sum(score)

    FROM std

    GROUP BY CUBE(class, sex);

- 설명 : 첫번째 행부터 전체의 토탈, sex의 토탈, 그리고 class, sex의 sum 순으로 출력된다.

.....

이 글이 도움이 되었기를 바랍니다. ^-^

공감♡ 클릭과 댓글은 글쓰기에  큰 힘이 됩니다.

[Oracle] 조건이 같은 것끼리 SUM하기

오라클 sum - olakeul sum
토끼2019. 8. 1. 14:30

담당 시스템에서 기준 컬럼 잡고 SUM 할 일이 많은데 매번 까먹곤 했다.

휴. 이제 기억하겠지. 기준 나누는걸 partition이라고 하니깐..

rollup은 잘 안 씀. group by 쓰긴 쓰지만, rollup은 sum이랑 떨어져있어서 안심이 안 돼

어떨 때 사용?

특정한 컬럼의 값이 동일한 값을 가지는 데이터들의 합을 구할 때

예를 들어 아래와 같이 A,B 컬럼을 가지는 Table이 있다고 하면

B의 값이 '가'인 것들끼리 묶어서 A값의 합을 구하고, '나'인 것들끼리 A값의 합을 구하고..

오라클 sum - olakeul sum

쿼리

select sum(더하기 할 컬럼) over (partition by기준이 되는 컬럼)

from 테이블명;

(예제)

select sum(A) over (partition by B)

from Table;

rollup 사용 가능

select sum(더하기 할 컬럼)

from 테이블명

group by rollup(기준이 되는 컬럼), 더하기 할 컬럼;

(예제)

select sum(A)

from Table

group by rollup(B), A;

※참고

https://umhj75.tistory.com/entry/SUM-OVER-ORACLE-%EB%82%B4%EC%9E%A5-%ED%95%A8%EC%88%98-ORACLE

오라클 sum - olakeul sum