728x90
이번 포스팅에서 다룰 것은 RollUp이다.
ROLLUP을 이용하면 중간 합계나 총합계를 구할 수 있다.
우선 예시와 함께 진행해보겠다.
## 예시에 사용된 테이블
CREATE TABLE TEMP1(
NUMBER1 INT,
NUMBER2 INT,
VARCHARS VARCHAR(30)
);
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (22, 31, '사과');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (13, 11, '파인애플');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (53, 11, '체리');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (64, 31, '수박');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (68, 44, '참외');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (99, 53, '오렌지');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (43, 51, '바나나');
예시에서 사용한 테이블은 저번 포스팅과 동일하다.
그렇지만 혹시 모를 것을 대비하여 위에 첨부했다.
SELECT VARCHARS, NUMBER1, SUM(NUMBER2)
FROM TEMP1
GROUP BY VARCHARS, NUMBER1
WITH rollup;
위의 쿼리처럼 "WITH ROLLUP"을 이용하면 중간합계를 구할 수 있다.
위의 쿼리를 돌리면 아래의 사진처럼 결과가 나온다.
사진을 보면 빨간색 네모칸에 있는 값이 중간 합계값
파란색 네모칸에 있는 값은 총 합계값을 말한다.
따라서 ROLLUP을 이용한다면 그리드에서 중간 합계와 총 합계를 표현할 수 있어진다.
만약에 총 합계만 사용하고 싶다면 아래처럼 하면 된다.
SELECT varchars,
sum(number1) as 'number1 비용',
sum(number2) as 'number2 비용'
FROM TEMP1
group by varchars
with rollup;
위의 코드를 입력하면
아래처럼 NUMBER1과 NUMBER2의 총 합계를 한번에 출력할 수 있다.
따라서 ROLLUP을 이용하면 다양하게 합계를 출력할 수 있다.
이번 포스팅에서는 rollup에 대해서 다뤄봤습니다.
사실 rollup을 이용하지 않고도 합계를 구하는 방법은 많지만
만약에 DAO에서 바로 front로 합계랑 같이 넘기는 경우에는 rollup을 사용하는 것도 고려해볼 법하다.
다음에는 더 유익한 포스팅으로 찾아오겠습니다.
728x90
'DB > SQL' 카테고리의 다른 글
[세무민의 코딩일기] DATE -> INT 변환과 쿼리에서 SET으로 날짜 변수 선언하기(형 변환) (0) | 2021.07.26 |
---|---|
[세무민의 코딩일기] 새로 만들 테이블에 기존 테이블의 값을 insert 하는 Tip (0) | 2021.07.25 |
[세무민의 코딩일기] 쉬우면서 어려운 집계함수에 대해서 알아보자! (0) | 2021.07.22 |
CRUD와 다양한 SELECT 검색조건에 대해서 자세하게 알아봅시다![DISTINCT, LIKE, IN, BETWEEN 등] (0) | 2021.07.21 |
세무민의 코딩일기 : CodeTable 혹은 ZTable에 대해서 알아봅시다. (0) | 2021.07.21 |